gpt4 book ai didi

ios - MagicalRecord 创建不会保存新的数据对象。

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:04:02 28 4
gpt4 key购买 nike

我有这个代码:

HLMReferenceData *referenceDataObj = [HLMReferenceData createEntity];
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext){
HLMReferenceData *localReferenceData = [referenceDataObj inContext:localContext];
// Setup localReferenceData here ....
}
completion:NULL];

据我所见,这与网上关于如何使用 MagicalRecord 创建新记录的示例完全一致。但是它不起作用。我在日志中得到这个:

... +[MagicalRecord(ErrorHandling) defaultErrorHandler:](0x3abdc4) Error Message: The operation couldn’t be completed. (Cocoa error 133000.)
... +[MagicalRecord(ErrorHandling) defaultErrorHandler:](0x3abdc4) Error Domain: NSCocoaErrorDomain
... +[MagicalRecord(ErrorHandling) defaultErrorHandler:](0x3abdc4) Recovery Suggestion: (null)
... -[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:](0x954b680) NO CHANGES IN ** UNNAMED ** CONTEXT - NOT SAVING

我深入研究了 Magical Record 的代码库,当调用 inContext: 方法时出现错误。结果它返回一个 nil 对象。我在网上搜索过,但无法找出问题所在。 HLMReferenceData 类映射到数据模型中的单个表,没有指向其他表的链接。类中的所有字段都会被填充。

我很迷茫。

最佳答案

inContext: 返回 nil,因为您的对象是在外部上下文中创建/插入的,并且从未保存过。因此它在 localContext 中还不可访问。 (更具体地说,inContext: 将尝试使用临时对象 ID 查找对象,但找不到。)您应该在保存 block 中创建/插入对象,如下所示:

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext){
HLMReferenceData *referenceDataObj = [HLMReferenceData createEntityInContext:localContext];
referenceDataObj.name = @"foo";
// Continue setting up referenceDataObj here ....
} completion: NULL];

您可以在保存下的 Magical Record 的 github 文档中看到一个非常相似的示例。请参阅“MagicalRecord 2.3.0 中保存的更改”小节

https://github.com/magicalpanda/MagicalRecord/blob/develop/Docs/Saving.md

关于ios - MagicalRecord 创建不会保存新的数据对象。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25738625/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com