2016-10-07 1 views
0

Je suis en train de stocker l'entrée d'utilisateur à mes données de base, mais je reçois une erreur:Swift - Comment sauvegarder les données d'entrée dans les données de base?

Mon code:

import UIKit 
import CoreData 

class AddFriendViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { 

    let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext 

    @IBOutlet weak var fName: UITextField! 
    @IBOutlet weak var lName: UITextField! 
    @IBOutlet weak var mobile: UITextField! 
    @IBOutlet weak var gender: UIPickerView! 
    @IBOutlet weak var address: UITextField! 
    var pickerDataSource = ["Male", "Female"]; 
    var genderPick:String = ""; 

//getting picker data here 

    @IBAction func addFriendBtn(sender: AnyObject) { 
     let entityDescription = NSEntityDescription.entityForName("Friends", inManagedObjectContext: managedObjectContext) 
     let friends = Friends(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext) 
     friends.firstName = fName.text!; 
     friends.lastName = lName.text!; 
     friends.mobile = mobile.text!; 
     friends.gender = genderPick; 
     friends.address = address.text!; 

     var error: NSError? 
     managedObjectContext!.save(&error) // error occurs here 
     if let err = error { 
      showMessage("Error While Adding to Core Data") 
     } else { 
      showMessage("Save to Core Data Successfully") 
     } 
    } 

    func showMessage(msg: String) 
     { 
      let alert = UIAlertController(title: "Message", message: msg, preferredStyle: UIAlertControllerStyle.Alert) 
      alert.addAction(UIAlertAction(title: "Okay", style: UIAlertActionStyle.Default, handler: nil)) 
      self.presentViewController(alert, animated: true, completion: nil) 
    } 

} 

Im obtenir une erreur dans cette ligne de code: managedObjectContext .save (& Erreur). L'erreur est « ne peut pas forcer la valeur Déballer de type non-option « NSManagedObjectContext » »

+0

Est-ce une erreur de compilation ou une erreur d'exécution? – Bek

+0

Erreur de compilateur @Bek –

Répondre

0
var theError: NSError? 
do { 
    try managedObjectContext!.save() 
} catch { 

    theError = error 
    print("Unresolved error \(theError), \(theError.userInfo)") 
} 

Selon Apple Doc, vous devez ajouter le code de gestion des erreurs lorsque vous invoquez fonction d'économie.

Handling Errors in Swift:

In Swift, this method returns Void and is marked with the throws keyword to indicate that it throws an error in cases of failure.

You call this method in a try expression and handle any errors in the catch clauses of a do statement, as described in Error Handling in The Swift Programming Language (Swift 3) and Error Handling in Using Swift with Cocoa and Objective-C (Swift 3).