SWIFT:创建新NSEntity时属性值的类型不可接受

sdnqo3pr  于 2022-10-04  发布在  Swift
关注(0)|答案(3)|浏览(187)

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

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,那么它工作得很好。

以完全相同的方式访问其他实体的其他代码工作得很好。

有什么主意吗?

ktca8awb

ktca8awb1#

好的,最后证明是相当简单的。原来我没有向实体中添加类。

如果您有这个问题:

1.单击xcdatamodel
1.选择实体。
1.在实用工具栏中显示数据模型检查器。
1.输入定义的类名(在我的案例中为Reseller)

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

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

希望这能帮到什么人。

ojsjcaue

ojsjcaue2#

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

只需将数字格式化程序拖到表格单元格视图上,它就会强制单元格的解释类型为数字,错误就会消失。

j5fpnvbx

j5fpnvbx3#

老帖子,但我只是想补充说,我也有同样的问题,我的问题类似于iphaaw的答案,但我的问题是为核心数据类和xcdatamodel设置父实体-我忘了在这里设置父实体。所以我的脚步是

(已在代码中设置了核心数据类的父实体)

与iphaaw相同的前3步-转到xcdatamodel,选择您的实体,在右侧显示数据模型检查器

1.点击Parent Entity(父实体)下拉菜单,填写应该在那里的内容

相关问题