我使用NSManagedObject
在默认NSManagedObject
中创建了NSManagedObjectContext
实体的多个实例(例如Car:MagicalRecord
)。
我没有保存上下文。有没有办法执行获取请求并获取已经处于持久状态的数据和在默认上下文中添加的尚未提交的数据?
答案 0 :(得分:1)
是的,它是获取的。请查看https://developer.apple.com/reference/coredata/nsmanagedobjectcontext上的Apple文档:
满足请求指定的条件的对象(它是请求指定的实体的实例,如果有请求,它与请求的谓词匹配)并且已插入到上下文但尚未保存的上下文中如果在该上下文上执行获取请求,则检索持久存储。
答案 1 :(得分:0)
据我所知...你可以获取所有内容然后查看对象objectID来决定哪一个已经保存了。
id all = [ctx fetch..];
id savedOnly = [NSMutableArray array];
for(id o in all) {
if([[o objectID] isTemporary] == NO) {
[savedOnly addObject:o];
}
}
或者更改您的代码以用于上下文 - 这可能更好:D
或可能使用谓词:
savedOnly = [ctx fetchWithPredicate:@"... self.objectID.isTemporary=NO"];
可能的工作......不知道
答案 2 :(得分:0)
如果我们讨论相同的托管对象上下文 - 是的,您应该能够获得那些未提交的对象。这是默认行为。托管对象上下文还包含未提交的对象,即尚未保存在持久性存储中的对象。