Swift:创建新 NSEntity 时属性值的类型不可接受
Swift: Unacceptable type of value for attribute when creating new NSEntity
我设置了一个具有以下属性的核心数据实体:
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 时崩溃并显示错误消息:
Unacceptable type of value for attribute: property = "resellerNo";
desired type = NSNumber; given type = __NSTaggedDate; value =
2001-01-01 00:00:00 +0000.
奇怪的是,如果你事先使用控制台打印 newReseller.resellerNo
那么它工作正常。
以完全相同的方式访问其他实体的其他代码工作正常。
有什么想法吗?
好的,最后证明很简单。事实证明我没有向实体添加 class。
如果您遇到这个问题:
- 点击 xcdatamodel
- 选择实体。
- 在实用程序栏中显示数据模型检查器。
- 输入定义的 class 名称(在我的例子中是经销商)
我还必须将我的 class 定义更改为:
@objc(Reseller)
class Reseller: NSManagedObject
{
@NSManaged var resellerNo: Int
@NSManaged var resellerName: String
}
希望这对某人有所帮助。
我在 table 视图绑定中收到了同样的错误消息。单元格(文本字段)默认为字符串的返回值,但核心数据希望它作为 NSNumber,因此看到 unacceptable 类型值错误。
通过简单地将数字格式化程序拖到 table 单元格视图上,它强制单元格的解释类型为数字,错误消失了。
我设置了一个具有以下属性的核心数据实体:
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 时崩溃并显示错误消息:
Unacceptable type of value for attribute: property = "resellerNo"; desired type = NSNumber; given type = __NSTaggedDate; value = 2001-01-01 00:00:00 +0000.
奇怪的是,如果你事先使用控制台打印 newReseller.resellerNo
那么它工作正常。
以完全相同的方式访问其他实体的其他代码工作正常。
有什么想法吗?
好的,最后证明很简单。事实证明我没有向实体添加 class。
如果您遇到这个问题:
- 点击 xcdatamodel
- 选择实体。
- 在实用程序栏中显示数据模型检查器。
- 输入定义的 class 名称(在我的例子中是经销商)
我还必须将我的 class 定义更改为:
@objc(Reseller)
class Reseller: NSManagedObject
{
@NSManaged var resellerNo: Int
@NSManaged var resellerName: String
}
希望这对某人有所帮助。
我在 table 视图绑定中收到了同样的错误消息。单元格(文本字段)默认为字符串的返回值,但核心数据希望它作为 NSNumber,因此看到 unacceptable 类型值错误。
通过简单地将数字格式化程序拖到 table 单元格视图上,它强制单元格的解释类型为数字,错误消失了。