0

我有一个具有以下属性的核心数据实体:

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; 给定类型 = __NSTaggedDate; 值 = 2001-01-01 00:00:00 +0000。

奇怪的是,如果您使用控制台newReseller.resellerNo预先打印,那么它工作正常。

以完全相同的方式访问其他实体的其他代码工作正常。

有任何想法吗?

4

2 回答 2

0

我在表视图绑定中有同样的错误消息。单元格(文本字段)默认为字符串的返回值,但 Core Data 想要它作为 NSNumber,因此看到不可接受的类型值错误。

通过简单地将数字格式化程序拖到表格单元格视图上,它强制单元格的解释类型为数字并且错误消失了。

于 2021-06-21T02:54:50.667 回答
0

好的,最终结果变得相当简单。事实证明我没有向实体添加类。

如果您遇到此问题:

  1. 点击 xcdatamodel
  2. 选择实体。
  3. 在实用工具栏中显示数据模型检查器。
  4. 输入定义的类名(在我的情况下为经销商)

我还必须将我的类定义更改为:

@objc(Reseller)
class Reseller: NSManagedObject
{
    @NSManaged var resellerNo: Int
    @NSManaged var resellerName: String
}

希望这可以帮助某人。

于 2016-04-03T15:54:21.337 回答