2015-09-05 68 views
2

如果在上下文中獲取以下錯誤,使用Xcode 7和swift 2.0?.save(nil)。上下文?.save(nil)出現錯誤

任何幫助表示讚賞

「不能在類型的非可選值,使用可選的鏈接‘的NSManagedObjectContext’

func newItem() { 
    let context = self.context 
    let ent = NSEntityDescription.entityForName("CallList", inManagedObjectContext: context) 

    let nItem = CallList(entity: ent!, insertIntoManagedObjectContext: context) 

    nItem.firstname = firstName.text 
    nItem.lastname = lastName.text 
    nItem.phonenumber = phoneNumber.text 
    context?.save(nil) 

回答

5

你得到這個錯誤作爲你的context變量是不可選的,因此?是沒用的

另外swift 2引入了do-catch結構以允許進行高級錯誤處理,就像您在其他語言中使用try-catch一樣,所以函數使用er ror參數如save()NSManagedObjectContext已更改並已丟失錯誤參數並將錯誤報告爲異常;所以你應該做

do { 
    try context.save() 
} catch let error { 
    // Handle error stored in *error* here 
} 

如果你不想來處理,你可以做錯誤

do { 
    try context.save() 
} catch {}