我正在尝试更改XCode
提供的示例主详细信息代码项目,以便不显示主文件中的NSDates
,而是显示字符串列表。
如果我将此行留在insertNewObject(sender:AnyObject)中,它可以正常工作......
newManagedObject.setValue(NSDate(), forKey: "timeStamp")
但如果我将其改为......
newManagedObject.setValue("hello", forKey: "timeStamp")
我收到错误信息......
***因未捕获的异常'NSInvalidArgumentException'而终止应用, reason:'属性值不可接受的类型:property =“timeStamp”; 所需类型= NSDate;给定type = Swift._NSContiguousString; value =你好。'
我找不到源代码中任何地方NSDate
的引用,我在故事板中看不到任何输入信息,但显然我遗漏了一些东西。
答案 0 :(得分:2)
newManagedObject
是xcdatamodeld
文件中定义的托管对象(也称为数据库对象),timestamp
被定义为日期。你必须改变那里的类型。
答案 1 :(得分:2)
如果您之前运行过该应用,请删除您设备上的应用。对模型的更改需要迁移(或全新安装:D)
我通过创建主/详细应用来测试这一点。我改变的唯一两件事是:
timeStamp
String
的{{1}}数据类型
Date
更改为NSDate
按预期工作。
答案 2 :(得分:1)
读取错误消息似乎timeStamp
类中的属性newManagedObject
被定义为NSDate
而不是字符串。检查newManagedObject
对象的类以验证它。