我有一个NSDictionary和一个CoreData数据库.我想将NSDictionary插入数据库.
我该怎么做(如果可能的话代码片段)?
字典属性的合适类型是什么?
我有两个类:Profile和Config.配置文件包含NSSet的Config对象.Profile和Config都是NSManagedObject子类.
@interface Profile : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSSet *configs;
- (void)print;
@end
Run Code Online (Sandbox Code Playgroud)
这是Config类
@interface Config : NSManagedObject
@property (nonatomic, retain) NSString * otherdata;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSMutableDictionary *myDict;
@property (nonatomic, retain) Profile *profile;
- (void)print;
@end
Run Code Online (Sandbox Code Playgroud)
字典myDict有NSString*键和值.现在当我对myDict进行任何更改时,我调用了NSManagedObjectsave方法,并且没有任何错误.只要我不杀死应用程序,一切都按预期运行.
但是当我强制杀死应用程序时(无论是在Xcode中还是通过双击主页按钮并在底部的按钮行中将其删除)然后重新启动应用程序,myDict中的数据将恢复为之前的状态,即新的数据实际上没有保存.它似乎只是在我杀死应用程序之前保存.
myDict在xcdatamodeld文件中列为Transformable.我没有指定任何NSTransformer课程就试过了.我也尝试过指定一个变换器类MyDictTransformer,在Config中我添加了这段代码:
在Config.h中:
@interface MyDictTransformer : NSValueTransformer
@end
Run Code Online (Sandbox Code Playgroud)
在Config.m中:
@implementation MyDictTransformer
+ (Class)transformedValueClass
{
return [NSMutableDictionary class];
}
+ (BOOL)allowsReverseTransformation
{
return …Run Code Online (Sandbox Code Playgroud)