我设置了一个Core Data实体,其中包含以下属性:
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”; 所需类型= NSNumber;给定type = __NSTaggedDate;值= 2001-01-01 00:00:00 +0000。
奇怪的是,如果您事先使用控制台打印newReseller.resellerNo
,那么它可以正常工作。
以完全相同的方式访问其他实体的其他代码可以正常工作。
有什么想法吗?
答案 0 :(得分:0)
好吧事实证明最终相当简单。事实证明我没有向实体添加一个类。
如果您遇到此问题:
我还必须将我的班级定义更改为:
@objc(Reseller)
class Reseller: NSManagedObject
{
@NSManaged var resellerNo: Int
@NSManaged var resellerName: String
}
希望这有助于某人。
答案 1 :(得分:0)
我在表视图绑定中遇到了同样的错误消息。单元格(文本字段)默认为字符串的返回值,但 Core Data 想要它作为 NSNumber,因此看到了不可接受的类型值错误。
通过简单地将数字格式化程序拖到表格单元格视图上,它会强制单元格的解释类型为数字,错误就消失了。