将Mantle模型中的值插入RealmDB

时间:2016-12-23 12:17:05

标签: objective-c realm github-mantle

我有一个问题: 如何通过循环将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];

这只保存模型的第一个元素,但我需要将它们全部保存在一起。我怎么能这样做?

非常感谢提前!!

1 个答案:

答案 0 :(得分:1)

由于Mantle还要求您的模型对象是模板类的子类,因此不可能有一个由MTLModelRLMObject类组成的单个对象。

因此,有必要手动将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];