我设置了一个具有以下属性的核心数据实体:
resellerNo:Int
resellerName:String
我设置了一个NSManagedObject,如下所示:
class Reseller: NSManagedObject
{
@NSManaged var resellerNo: Int
@NSManaged var resellerName: String
}
如果我尝试运行此方法:
func createNewReseller(resellerName: String)
{
let context = app.managedObjectContext
let resellerEntity = NSEntityDescription.entityForName("Resellers", inManagedObjectContext: context)
let newReseller = Reseller(entity: resellerEntity!, insertIntoManagedObjectContext: context)
newReseller.resellerNo = 12
newReseller.resellerName = resellerName
saveDatabase()
Swift.print ("Reseller (resellerName) created")
}
然后,在尝试分配resellerNo时崩溃,并显示错误消息:
属性值的类型不可接受:Property=“resellerNo”;所需类型=NSNnumber;给定类型=__NSTaggedDate;Value=2001-01-01 00:00:00+0000。
奇怪的是,如果您使用控制台预先打印newReseller.resellerNo
,那么它工作得很好。
以完全相同的方式访问其他实体的其他代码工作得很好。
有什么主意吗?
3条答案
按热度按时间ktca8awb1#
好的,最后证明是相当简单的。原来我没有向实体中添加类。
如果您有这个问题:
1.单击xcdatamodel
1.选择实体。
1.在实用工具栏中显示数据模型检查器。
1.输入定义的类名(在我的案例中为Reseller)
我还必须将我的类定义更改为:
希望这能帮到什么人。
ojsjcaue2#
我在表视图绑定中遇到了同样的错误消息。单元格(文本字段)默认为字符串的返回值,但Core Data希望它作为NSNnumber,因此看到了不可接受的类型值错误。
只需将数字格式化程序拖到表格单元格视图上,它就会强制单元格的解释类型为数字,错误就会消失。
j5fpnvbx3#
老帖子,但我只是想补充说,我也有同样的问题,我的问题类似于iphaaw的答案,但我的问题是为核心数据类和xcdatamodel设置父实体-我忘了在这里设置父实体。所以我的脚步是
(已在代码中设置了核心数据类的父实体)
与iphaaw相同的前3步-转到xcdatamodel,选择您的实体,在右侧显示数据模型检查器
1.点击Parent Entity(父实体)下拉菜单,填写应该在那里的内容