无法使用“(nil)”类型的参数列表调用“保存”
Posted
技术标签:
【中文标题】无法使用“(nil)”类型的参数列表调用“保存”【英文标题】:Cannot invoke "save" with an argument list of type "(nil)' 【发布时间】:2015-06-14 18:21:16 【问题描述】:需要有关打击代码的帮助。刚刚更新到 Xcode 7 测试版
我收到以下错误“无法使用类型为“(nil)'”的参数列表调用“保存”。这在 ios 6 中有效
import UIKit
import CoreData
class ItemViewController: UIViewController
@IBOutlet weak var textFieldDiveNumber: UITextField!
@IBOutlet weak var textFieldDiveDate: UITextField!
@IBOutlet weak var textFieldDiveLocation: UITextField!
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view.
@IBAction func saveTapped(sender: AnyObject)
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let contxt: NSManagedObjectContext = appDel.managedObjectContext
let en = NSEntityDescription.entityForName("List", inManagedObjectContext: contxt)
var newItem = Model(entity: (en)!, insertIntoManagedObjectContext: contxt)
newItem.divenumber = textFieldDiveNumber.text!
newItem.divedate = textFieldDiveDate.text!
newItem.divelocation = textFieldDiveLocation.text!
contxt.save(nil)
self.navigationController?.popToRootViewControllerAnimated(true)
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
【问题讨论】:
你试过传入NULL
吗?
是的,我有,它指出NULL不可用,使用'nil'而不是这个导入的宏
【参考方案1】:
自上周一以来已多次询问此问题,但从 SE iOS 应用中查找和标记重复项很麻烦,所以...
在 Swift 2 中,NSManagedObjectContext
的 save()
方法标记为 throws
,因此您必须处理由此产生的任何错误。 (而且您不会将错误指针作为参数传递。)
您的 Swift 1 代码忽略了错误; Swift 2 等价物是一个空的 catch
:
do
try context.save()
catch
// you can go about your business. move along.
不过,忽略错误并不是一个好主意。如果您不想通过在catch
中执行一些有用的操作来使用户可恢复错误,则只需计划因错误而崩溃:
try! context.save()
【讨论】:
【参考方案2】:Thanx Rickster,我确实在当天早些时候遇到并尝试了您的方法,但没有奏效。 但是当你重新发布你的答案时,我只是这次使用“contxt”而不是“context”再次尝试并且它有效。 非常感谢你。 问候。 德尔
【讨论】:
以上是关于无法使用“(nil)”类型的参数列表调用“保存”的主要内容,如果未能解决你的问题,请参考以下文章
Swift:无法使用类型为“([Idea],来自:Data)”的参数列表调用“解码”