NSPredicate状态还原

科齐亚

创建谓词时,我会使用一些实体

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"location IN %@", anno.locationsArray];
//locationArray contains SMLocation Entity

知道文档说明:

如果需要谓词的持久表示,请创建一个存档(NSPredicate采用NSCoding协议)。

我希望那里没有问题,但是在里面时:

-(UIViewController*)application:(UIApplication *)application viewControllerWithRestorationIdentifierPath:(NSArray *)identifierComponents coder:(NSCoder *)coder

我打电话:

NSPredicate* predicate = [coder decodeObjectForKey:@"predicate"];

我收到错误消息:

[SMLocation initWithCoder:]:无法识别的选择器已发送到实例

因此,似乎用于创建谓词的实体也必须采用NSCoding协议。我发现这非常不便,特别是实现一对多关系会很麻烦。

我虽然想使用此处的ManagedObjectID来保存实体,例如此处(http://aplus.rs/2013/using-state-preservation-with-core-data/),然后重新创建谓词,但我认为这样做非常笨拙实现我的目标。

是否有任何聪明的解决方法来还原NSPredicate?

戴维·贝里

出于有限的目的,看来您可以NSCoding通过编码来实现managedObjectID,您实际上并不需要保存和恢复整个对象,只需将ID保存为encoding并从中返回正确的对象即可。initWithCoder

就像是:

-(void)encodeWithCoder:(NSCoder*)coder
{
    [coder encodeObject:[self.managedObjectID URIRepresentation] forKey:@"managedObjectID"];
}

-(id)initWithCoder:(NSCoder*)coder
{
    NSURL*               url = [coder decodeObjectForKey:@"managedObjectID"];
    NSManagedObjectID*   oid = [persistentStoreCoordinator managedObjectIDForURIRepresentation:url];
    return [managedObjectContext objectWithId:oid];
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

NSPredicate状态还原

来自分类Dev

如何还原“等待上传”状态

来自分类Dev

UIViewController状态还原-弱关系

来自分类Dev

保存和还原片段状态

来自分类常见问题

RecyclerView存储/还原活动之间的状态

来自分类Dev

iOS状态还原和UINavigationController模态视图

来自分类Dev

旋转后如何正确还原视图状态

来自分类Dev

将div还原为其原始状态

来自分类Dev

片段自动保存和还原EditText的状态

来自分类Dev

iOS CoreBluetooth:状态保留和还原

来自分类Dev

无法在iOS上还原蓝牙状态

来自分类Dev

在Android中保存和还原片段状态

来自分类Dev

保存和还原python解释器状态

来自分类Dev

将Azure网站还原到初始状态

来自分类Dev

在Android中保存和还原片段状态

来自分类Dev

反应路由和还原状态

来自分类Dev

还原器在redux中的先前状态与反应

来自分类Dev

如何保存WebView状态并在Android Lollipop中还原它?

来自分类Dev

Clojure-如何执行还原功能但处于下降状态?

来自分类Dev

MVVM应用程序无法正确还原状态

来自分类Dev

在表单关闭时将组合框还原到原始状态

来自分类Dev

如何跨设备维护应用内购买和还原的状态

来自分类Dev

在动态创建的UI中保存和还原实例状态?

来自分类Dev

状态还原仅在连接到Xcode时有效

来自分类Dev

虚拟PC:无法从休眠状态还原计算机

来自分类Dev

Drools-将规则引擎还原为初始状态?

来自分类Dev

戴尔还原到出厂状态(Windows 7,恢复分区)

来自分类Dev

如何跨设备维护应用内购买和还原的状态

来自分类Dev

如何在Firefox 4中还原状态栏?