2016-04-07 9 views
0

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:

enter image description here

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) 
+0

So ist Ihr Problem jetzt gelöst? – Scadge

+0

@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. –

+0

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

Antwort

0

Es stellte sich heraus, dass ich die APP_ID und SECRET_KEY Variablen, um die sa versehentlich gab ich Wert. Nach der Reparatur funktioniert alles einwandfrei!

Verwandte Themen