1

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

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

提前谢谢了!!

4

1 回答 1

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];
}];

为了清洁,您还可以将此“复制”逻辑移动到您的领域对象的 init 方法中

FreeFood *freeFood = [[FreeFood alloc] initWithMantleModel:model];
于 2016-12-23T13:35:25.433 回答