保存在魔法记录中?

Saving in Magical Record?

我写了一段代码来解析一些 JSON 并通过神奇的记录将数据保存到数据库:

NSMutableArray *resultsArray = [NSMutableArray array];
NSArray *timesArray = JSON[@"results"];
for (NSDictionary *record in timesArray) {
    Time *newTime = [Time MR_createEntity];
    newTime.distance = record[@"distance"];
    newTime.time = record[@"time"];
    newTime.date = [[MMXFormatter instance] dateFromString:record[@"date"]];
    newTime.createdAt = [[MMXFormatter instance] dateFromString:record[@"createdAt"]];
    newTime.updatedAt = [[MMXFormatter instance] dateFromString:record[@"updatedAt"]];
    [resultsArray addObject:newTime];
}
[MagicalRecord saveWithBlock:nil];

以上代码没有保存到持久存储中。好久没用 Magical Record 了,感觉存档跟以前不一样了。我现在如何保存我的数据?

如果要使用saveWithBlock,代码应该是

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext){
    Time *newTime = [Time MR_createEntityInContext:localContext];
    newTime.distance = ...
    ...
}

另一种方法是将 saveWithBlock 替换为 MR_saveToPersistentStoreAndWait

NSMutableArray *resultsArray = [NSMutableArray array];
NSArray *timesArray = JSON[@"results"];
for (NSDictionary *record in timesArray) {
    Time *newTime = [Time MR_createEntity];
    newTime.distance = record[@"distance"];
    newTime.time = record[@"time"];
    newTime.date = [[MMXFormatter instance] dateFromString:record[@"date"]];
    newTime.createdAt = [[MMXFormatter instance] dateFromString:record[@"createdAt"]];
    newTime.updatedAt = [[MMXFormatter instance] dateFromString:record[@"updatedAt"]];
    [resultsArray addObject:newTime];
}
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];

为了更好地了解 CoreData 和 MegicalRecord,我建议您阅读本教程

http://code.tutsplus.com/tutorials/easy-core-data-fetching-with-magical-record--mobile-13680