Ich mache eine App, die Backendless zum Speichern von Daten verwendet. Ich habe alles angeschlossen, wie sie zu here gesagt haben.App stürzt ab, wenn Backendless-Methode persistenceService heißt
Doch die App stürzt ab, wenn die persistenceService
Methode aufgerufen wird:
backendless.persistenceService.of(UserSchema.ofClass()).save(user)
Hier ist der Code für die Datei:
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)
}
}
}
Hier ist die UserSchema
Klasse:
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?
}
Was verursacht den Absturz?
Hier ist ein Screenshot von dem Schema:
Dies ist ein Repo ist, so dass Sie den Code klonen und testen. Ich habe ein paar Änderungen vorgenommen, die in der Frage aus dem Code hier unterscheiden:
https://github.com/calebkleveter/chatter
den Absturz zu reproduzieren; Führen Sie die App aus, wählen Sie die Anmeldeschaltfläche auf der Anmeldeseite, füllen Sie alle Felder mit den richtigen Informationen aus und tippen Sie auf "Anmelden". Taste. Die App wird abstürzen.
Update:
I, indem man einen Bremspunkt in dieser Zeile in eine Log-Ausgabe erhalten verwalten
backendless.persistenceService.of(UserSchema.ofClass()).save(user)
Und treten, ich dann über die App trat, bis es abgestürzt und ich dies bekam:
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)
So ist Ihr Problem jetzt gelöst? – Scadge
@Scadge, nein, das hat den Absturz nicht gelöst. Es löste die Ausgabe, die ich bekam. Ich habe einen Link in meiner Frage zu einem GitHub Repo hinzugefügt, den ich dafür gemacht habe. –
Erhalten Sie ein Protokoll? Scheint, dass Sie viele Einschränkungen in Ihrem Projekt haben und einige von ihnen sind widersprüchlich. Wie auch immer, dies scheint nicht mit Backendless verwandt zu sein. – Scadge