保存在魔法记录中?

Posted

技术标签:

【中文标题】保存在魔法记录中?【英文标题】:Saving in Magical Record? 【发布时间】:2015-09-26 17:43:06 【问题描述】:

我已经编写了一个代码来解析一些 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];

上面的代码不会保存到持久存储中。好久没用魔法唱片了,好像储蓄和以前不一样了。我现在如何保存我的数据?

【问题讨论】:

【参考方案1】:

如果你想使用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

【讨论】:

非常好的教程,但老实说,您在答案中提供的代码更适合我正在寻找的内容。你知道任何展示 MR 和在后台线程上工作的好教程吗?到目前为止,我能找到的关于 MR 的所有信息都在主线程上 官网是找这类教程的好地方,github.com/magicalpanda/MagicalRecord/blob/master/Docs/…或github.com/magicalpanda/MagicalRecord/blob/master/Docs/…

以上是关于保存在魔法记录中?的主要内容,如果未能解决你的问题,请参考以下文章

魔法记录,无法保存对象:contextDidSave == NO, error = nil

ios应用程序在神奇记录中的findall API崩溃

python的__slots__节约内存的魔法

算法分块——教主的魔法&不勤劳的图书管理员

Python类中的魔法方法之 __slots__

zb历史记录保存在哪