簡體   English   中英

Swift-如何將輸入數據保存到核心數據中?

[英]Swift - How can I save input data into Core Data?

我正在嘗試將用戶輸入存儲到我的核心數據,但出現錯誤:

我的代碼:

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)
    }

}

我在以下代碼行中遇到錯誤:managedObjectContext!.save(&error)。 錯誤是“無法強制打開非可選類型'NSManagedObjectContext'的值”

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

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

根據Apple Doc的說法,調用保存功能時需要添加錯誤處理代碼。

在Swift中處理錯誤:

在Swift中,此方法返回Void並用throws關鍵字標記,以指示在失敗的情況下拋出錯誤。

您可以在try表達式中調用此方法,並處理do語句的catch子句中的所有錯誤,如Swift編程語言(Swift 3)中的錯誤處理和結合使用Swift與Cocoa和Objective-C(Swift 3)中的錯誤處理中所述)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM