Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CoreData:使用具有只读持久存储的瞬态属性_Ios_Core Data_Readonly_Transient_Nspersistentstore - Fatal编程技术网

Ios CoreData:使用具有只读持久存储的瞬态属性

Ios CoreData:使用具有只读持久存储的瞬态属性,ios,core-data,readonly,transient,nspersistentstore,Ios,Core Data,Readonly,Transient,Nspersistentstore,从只读持久存储处理托管对象(NSManagedObject),我试图使用临时属性来存储一些临时值。考虑到瞬态属性没有保存到持久性存储,我认为将它们用于缓存目的并没有什么错。但事实证明,即使是在只读存储中的托管对象的瞬态属性中,也无法写入数据。在NSManagedContext的保存操作中,我遇到了这个错误 “无法将对象更新到只读存储” (我确定只更改了瞬态属性。) 为什么呢?它是否可以被视为NSManagedObjectContext的bug?感谢分享您的想法。这是预期行为。无法修改只读存储。甚

只读
持久存储处理托管对象(
NSManagedObject
),我试图使用临时属性来存储一些临时值。考虑到瞬态属性没有保存到持久性存储,我认为将它们用于缓存目的并没有什么错。但事实证明,即使是在
只读存储中的托管对象的瞬态属性中,也无法写入数据。在
NSManagedContext
的保存操作中,我遇到了这个错误

“无法将对象更新到只读存储”

(我确定只更改了瞬态属性。)


为什么呢?它是否可以被视为NSManagedObjectContext的bug?感谢分享您的想法。

这是预期行为。无法修改只读存储。甚至在托管对象上下文(内存中)中也没有。这就是“只读”的含义。几乎不是虫子

解决方案相当简单。创建第二个内存持久存储,并通过配置将其集成到托管对象模型中。通过此商店跟踪您的临时财产。也许您必须创建一个“包装器”实体,并通过关系将其链接到只读存储


尽管创建了一个更复杂的模型设置,我认为这是一个可行的解决方案,因为一旦你完成了这个设置,你基本上可以忘记它

这是预期的行为。无法修改只读存储。甚至在托管对象上下文(内存中)中也没有。这就是“只读”的含义。几乎不是虫子

解决方案相当简单。创建第二个内存持久存储,并通过配置将其集成到托管对象模型中。通过此商店跟踪您的临时财产。也许您必须创建一个“包装器”实体,并通过关系将其链接到只读存储


尽管创建了一个更复杂的模型设置,我认为这是一个可行的解决方案,因为一旦你完成了这个设置,你基本上可以忘记它

您可以在实体类中声明自己的属性:

@interface DBExample : NSManagedObject

@property (nonatomic, strong) NSDictionary *userInfo;

@end
实施:

@implementation DBExample

@synthesize userInfo = _userInfo;

@end

顺便问一下,为什么要用附加的只读持久存储保存上下文?

您可以在实体类中声明自己的属性:

@interface DBExample : NSManagedObject

@property (nonatomic, strong) NSDictionary *userInfo;

@end
实施:

@implementation DBExample

@synthesize userInfo = _userInfo;

@end

顺便问一下,为什么要用附加的只读持久存储保存上下文?

你说得有道理。我只是认为,在这种情况下,保存操作应该是无痛的,因为它不是试图将数据写入持久性存储。这是有道理的。我只是认为在这种情况下,保存操作应该是无痛的,因为它不是试图将数据写入持久性存储。谢谢您提供了一个简单的解决方案。出于我的目的,使用这样一个自定义属性会更好,因为我保持了模型图中temp属性的干净。除此之外,我不需要任何撤销管理,这些临时属性基本上是用于撤销管理的。至于你的问题。我的持久存储协调器包含两个具有相同数据结构的持久存储。其中一个(默认数据集)是只读的。我唯一想添加的是,如果您定义自定义实例变量或属性,比如“您应该在didTurnIntoFault中清理这些变量,而不是dealloc”。(来自NSManagedObject文档)感谢您提供了一个简单的解决方案。出于我的目的,使用这样一个自定义属性会更好,因为我保持了模型图中temp属性的干净。除此之外,我不需要任何撤销管理,这些临时属性基本上是用于撤销管理的。至于你的问题。我的持久存储协调器包含两个具有相同数据结构的持久存储。其中一个(默认数据集)是只读的。我唯一想添加的是,如果您定义自定义实例变量或属性,比如“您应该在didTurnIntoFault中清理这些变量,而不是dealloc”。(来自NSManagedObject文档。)