Verileri tutmak için Backendless kullanan bir uygulama yapıyorum. here'a söyledikleri gibi herşeyi aldım.Backendless yöntemi persistenceService çağrıldığında uygulama çöküyor
Ancak persistenceService
yöntemi denir uygulama kilitleniyor:
import Foundation
// Class for data that gets sent to the Backendless database
class UserSchema: NSObject {
var zip: String?
var userName: String?
var password: String?
var firstName: String?
var lastName: String?
var email: String?
var dateOfBirth: String?
}
:
İşte
import UIKit
class SignUpViewController: UIViewController {
@IBOutlet weak var userName: UITextField!
@IBOutlet weak var email: UITextField!
@IBOutlet weak var password: UITextField!
@IBOutlet weak var firstName: UITextField!
@IBOutlet weak var lastName: UITextField!
@IBOutlet weak var dateOfBirth: UITextField!
@IBOutlet weak var zip: UITextField!
let backendless = Backendless.sharedInstance()
// Create a new instance of UserSchema for the use of createing a new user.
let user = UserSchema()
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func signUp() {
// Check to make sure all fields have proper values and are not nill.
if userName.text != nil && email.text != nil && password.text != nil && firstName.text != nil
&& lastName.text != nil && dateOfBirth != nil && zip.text != nil && Int(zip.text!) != nil {
// Asign text from fields to the variables for the new user.
user.userName = userName.text
user.email = email.text
user.password = password.text
user.firstName = firstName.text
user.lastName = lastName.text
user.dateOfBirth = dateOfBirth.text
user.zip = zip.text
backendless.persistenceService.of(UserSchema.ofClass()).save(user)
shouldPerformSegueWithIdentifier("succesfulSignUp", sender: nil)
} else {
// Alert the user if any of the values are nil so they can fix the issue.
let emptyTextFieldAlert = UIAlertController(title: "Empty Field", message: "Please make sure all fields have proper values", preferredStyle: .Alert)
emptyTextFieldAlert.addAction(UIAlertAction(title: "OK", style: .Default, handler: { action -> Void in
// Do nothing
}))
self.presentViewController(emptyTextFieldAlert, animated: true, completion: nil)
}
}
}
UserSchema
sınıftır: Burada
backendless.persistenceService.of(UserSchema.ofClass()).save(user)
dosya için koddur
Kilitlenme nedenleri nelerdir? Eğer klonlamak ve kodu test edebilmeniz için bir Repo olduğunu
: Burada
şemanın bir ekran resmi. Bahse konu burada kodundan farklı olan bir kaç değişiklikler yaptık:https://github.com/calebkleveter/chatter
kazasında yeniden oluşturmak için; Uygulamayı çalıştırın, sayfadaki kayıt ol düğmesini seçin, tüm bilgileri uygun bilgilerle doldurun ve ardından "Kaydol!" a basın. buton. Uygulama kilitlenecek.
Güncelleme:
ben bu hat
backendless.persistenceService.of(UserSchema.ofClass()).save(user)
bir fren noktasını yerleştirerek Ve içine adım atarak bir ölçüm sonucu başardı, o zaman uygulaması yoluyla basan e kadar, düştüğü ve ben
2016-04-11 12:04:09.025 Chatter[21686:11538370] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[0]'
*** First throw call stack:
(
0 CoreFoundation 0x0000000106c64e65 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x00000001090f5deb objc_exception_throw + 48
2 CoreFoundation 0x0000000106b23652 -[__NSPlaceholderArray initWithObjects:count:] + 290
3 CoreFoundation 0x0000000106b807e4 +[NSArray arrayWithObjects:count:] + 52
4 Chatter 0x00000001053ffc53 -[PersistenceService save:] + 409
5 Chatter 0x00000001052e2eb5 _TFC7Chatter20SignUpViewController6signUpfS0_FT_T_ + 8709
6 Chatter 0x00000001052e3452 _TToFC7Chatter20SignUpViewController6signUpfS0_FT_T_ + 34
7 UIKit 0x0000000107bd3194 -[UIApplication sendAction:to:from:forEvent:] + 92
8 UIKit 0x0000000107d426fc -[UIControl sendAction:to:forEvent:] + 67
9 UIKit 0x0000000107d429c8 -[UIControl _sendActionsForEvents:withEvent:] + 311
10 UIKit 0x0000000107d41af8 -[UIControl touchesEnded:withEvent:] + 601
11 UIKit 0x0000000107c4249b -[UIWindow _sendTouchesForEvent:] + 835
12 UIKit 0x0000000107c431d0 -[UIWindow sendEvent:] + 865
13 UIKit 0x0000000107bf1b66 -[UIApplication sendEvent:] + 263
14 UIKit 0x0000000107bcbd97 _UIApplicationHandleEventQueue + 6844
15 CoreFoundation 0x0000000106b90a31 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
16 CoreFoundation 0x0000000106b8695c __CFRunLoopDoSources0 + 556
17 CoreFoundation 0x0000000106b85e13 __CFRunLoopRun + 867
18 CoreFoundation 0x0000000106b85828 CFRunLoopRunSpecific + 488
19 GraphicsServices 0x000000010b743ad2 GSEventRunModal + 161
20 UIKit 0x0000000107bd1610 UIApplicationMain + 171
21 Chatter 0x00000001052ea13d main + 109
22 libdyld.dylib 0x0000000109c4692d start + 1
23 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
Yani sorun şimdi çözüldü mü? – Scadge
@Scadge, hayır, bu çökmeyi çözmedi. Aldığım çıktıyı çözdü. Sorumlulukta yaptığım bir GitHub repo'ya bir bağlantı ekledim. –
Herhangi bir kayıt aldınız mı? Projenizde çok fazla kısıtlama bulunduğunu ve bunların bir kısmının çelişkili olduğunu düşünüyor. Neyse, bu Backendless ile ilgili görünmüyor. – Scadge