我有一个问题: 如何通过循环将Mantle模型的值保存到Realm数据库? 我的代码如下:
MTLmodel *model = [MTLJSONAdapter modelOfClass:[MTLmodel class] fromJSONDictionary:jsonResponse error:&error];
FreefoodRealmdb* food = [[FreefoodRealmdb alloc]init];
food.foodName = model.name;
NSLog(@"%@",food.foodName);
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
[realm addObject:food];
[realm commitWriteTransaction];
这只保存模型的第一个元素,但我需要将它们全部保存在一起。我怎么能这样做?
非常感谢提前!!
答案 0 :(得分:1)
由于Mantle还要求您的模型对象是模板类的子类,因此不可能有一个由MTLModel
和RLMObject
类组成的单个对象。
因此,有必要手动将Mantle对象中的值复制到Realm对象以保存它。
如果您的Mantle对象属性名称与Realm中的名称匹配,您可以将该过程自动化到相当程度:
NSDictionary *mantleDict = model.dictionaryValue;
FreeFood *freeFood = [[FreeFood alloc] init];
for (RLMProperty *property in freeFood.objectSchema.properties) {
freeFood[property.name] = mantleDict[propertyName];
}
RLMRealm *realm = [RLMRealm defaultRealm];
[realm transactionWithBlock:^{
[realm addObject:food];
}];
为了清洁,您还可以将此“复制”逻辑移动到Realm对象的init方法
FreeFood *freeFood = [[FreeFood alloc] initWithMantleModel:model];