核心数据:ID 已设置,但保存时显示为 nil
Posted
技术标签:
【中文标题】核心数据:ID 已设置,但保存时显示为 nil【英文标题】:Core Data: Id is set but showing up as nil when saving 【发布时间】:2020-05-16 19:42:51 【问题描述】:在 Xcode 11.4.1 中保存核心数据实体时,错误告诉我一个属性是 nil
,即使我只是设置了它(打印显示了这一点)。我运行的代码是:
let res = Result(context: context)
res.completionTime = NSDate() as Date
res.value = value
res.id = UUID()
res.parentRow = self.row
print(res)
do
try context.save()
catch
print(error)
Result
是通过以下方式定义的:
extension Result
@nonobjc public class func fetchRequest() -> NSFetchRequest<Result>
return NSFetchRequest<Result>(entityName: "Result")
@NSManaged public var completionTime: Date?
@NSManaged public var value: Int16
@NSManaged public var id: UUID?
@NSManaged public var parentRow: Row?
在print
语句中,我看到id
和parentRow
已设置。
<Result: 0x6000035aa710> (entity: Result; id: 0x60000166e4c0
<x-coredata:///Result/tDEBC3DA1-6A05-4150-9EB4-BFD4A79A94E52>;
data:
completionTime = "2020-05-16 19:38:47 +0000";
id = "E557C8E4-A64F-4C83-9774-F2C2A19C1697";
parentRow = "0xa82f7a0d615a81bc
<x-coredata://F6AEF455-DF4A-4A39-9353-FF0AE5189A8D/Row/p35>";
value = 5;
)
但是错误告诉我id
和parentRow
是nil
。设置了其他属性,例如 value
。这是什么原因造成的?
Error Domain=NSCocoaErrorDomain Code=1560 "Multiple validation errors occurred."
UserInfo=NSDetailedErrors=(
"Error Domain=NSCocoaErrorDomain Code=1570 \"id is a required value.\"
UserInfo=NSValidationErrorObject=<Result: 0x6000035a80a0> (entity: Result;
id: 0xa82f7a0d61d281be <x-coredata://F6AEF455-DF4A-4A39-9353-FF0AE5189A8D/Result/p1>;
data: \n completionTime = \"2020-05-16 19:03:14 +0000\";\n
id = nil;\n
parentRow = nil;\n value = 5;\n), NSValidationErrorKey=id,
NSLocalizedDescription=id is a required value.",
"Error Domain=NSCocoaErrorDomain Code=1570 \"parentRow is a required value.
\" UserInfo=NSValidationErrorObject=<Result: 0x6000035a80a0> (entity: Result; id: 0xa82f7a0d61d281be <x-coredata://F6AEF455-DF4A-4A39-9353-FF0AE5189A8D/Result/p1>;
data: \n
completionTime = \"2020-05-16 19:03:14 +0000\";\n
id = nil;\n
parentRow = nil;\n
value = 5;\n
),
NSValidationErrorKey=parentRow,
NSLocalizedDescription=parentRow is a required value."
)
【问题讨论】:
【参考方案1】:我遇到了这个问题,然后我意识到我的反向关系之一是一对一,而它应该是一对多,删除规则设置为 Nullify,所以当我将第二个对象设置为具有该关系时,它可能假定先前的对象不再相关,并取消了该关系。因此,也许与 parentRow 的反向关系(例如,您的 Row 实体中的“childRows”)的类型为 To One 而不是 To Many(在数据模型检查器中检查关系)并且 parentRow 被设置为 nil 每当其他一些行被赋予相同的父级。
【讨论】:
以上是关于核心数据:ID 已设置,但保存时显示为 nil的主要内容,如果未能解决你的问题,请参考以下文章
虽然我已将我的 Visual Studio 安装程序的语言更改为韩语,但卸载程序在卸载启动时显示为英文
由于数据库的列保存数据为null,前端查询时显示为undefined