2013-10-18 66 views
0

所以,我现在用的是AFPhotoEditorController并有一名为AFPhotoeditorSession的门店其财产和跟踪所有用户action.THis会话类是从NSObject的继承自定义对象,我用Google搜索有关如何在NSUser默认值中保存自定义对象,并知道我们可以保存该类,如果该类符合协议NSCoding,我不知道是否可以更改此类,因为它是只有.h文件,我有我的AviarySDk的自定义框架。保存第三方库自定义对象到NSUSerDefault

NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject: 
    [self.sessions objectAtIndex:0]]; // self.session an array of one object of AFPhotoeditorSession 
     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
     [defaults setObject:myEncodedObject forKey:@"myEncodedObjectKey"]; 
     [defaults synchronize]; 
     NSData *data1 = [defaults objectForKey:@"myEncodedObjectKey"]; 
     AFPhotoEditorSession *obj = (AFPhotoEditorSession *)[NSKeyedUnarchiver unarchiveObjectWithData: data1]; 
     NSLog(@"%@",obj); 

我收到错误,如:

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<AFPhotoEditorSession 0x1c5fa0f0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key modified.' 

而且你可以通过声明并确定其符合一类在PhotoEditorSession

回答

0

检查AFPhotoEditor Session类可以使类符合NSCoding遵循该协议并实施必要的方法。

+0

在那里我可以实现** initwithencoder **或其他NSCoding necceassary的方法,因为我没有这个AFPhotoEditorSession的.m文件,这就是我理解的主要问题 –

+0

@GauravGarg。这完全是**为什么我建议使用一个类别。在一个单独的'.m'文件中。 – 2013-10-18 21:47:26

+0

所以,我试了一下,但我的AFPhotoeditor会话只读类型 –

0

实际上,创建您自己的类别意味着您将不得不让它符合该对象,因为新的ivars会永久添加或更改。

正确的方法是确定您需要重新创建该类的对象 - 核心值 - 然后为每个对象创建键和值,并将其放入字典中。将字典放入用户默认值中。当你想检索值时,拉出一个字典,使用这些值来实例化对象。

另一个选择是让AFPhotoeditor的作者去做,或者自己做,然后发给他一个拉动请求。但是,如果您将其作为附加功能进行添加,则每次原始框架更改时都必须更新类别。

+0

但他只能使用作文和课堂的公共接口。不需要搞乱实现细节。 – 2013-10-18 22:18:17

+0

没有任何方法可以通过它的属性获取AFPhotoEditorSession的实例。 –

+0

@GauravGarg然后没有办法将它们保存到磁盘。如果你不能用它的属性重构一个实例,那么它需要上下文,因此它不是可序列化的。抱歉。 – 2013-10-18 22:51:46

相关问题