魔法记录 - 出现在objective-c中的重复记录

时间:2016-05-02 09:10:18

标签: objective-c xcode cocoa magicalrecord

在我的ios应用程序中,我正在使用魔法记录..首先,我正在从服务器检索json数据。然后应将json数据存储到魔法记录中。问题是当我从魔法记录中获取数据时,我反复获取数据。我想在tableview中显示神奇的记录数据。如果我每次菜单项计数增加时运行应用程序。

json回复:

应用菜单列表项目响应:

{

状态=成功;

data =

{

文字="紧急摘要";

},

{

文字="新问题&#34 ;;

},

{

Text =" Family History New";

}

我的神奇记录回应是:

列出项目(实体:AppMenuList; id:0x7b10fb80;数据:

{

menuItemName ="紧急摘要";

列出项目(实体:AppMenuList; id:0x7b10fb90

menuItemName ="紧急摘要";

列出项目(实体:AppMenuList; id:0x7b10fba0

menuItemName =“问题新”

我从这样的魔法记录中获取数据:

  • (void)parseGetAppMenuListResponse:(NSDictionary *)mediaResponse {

NSArray * dbMenuListArray = [AppMenuList MR_findAll];

NSArray * menuListDetailsArray = [MenuListDetails MR_findAll];

DLog(@" AppMenuList:%@",[AppMenuList MR_findAll]);

DLog(@" MenuListDetails:%@",[MenuListDetails MR_findAll]);

DLog(@" MenuResponse:%@",mediaResponse);

for(int iCount = 0; iCount< [[mediaResponse objectForKey:@" data"] count]; iCount ++){

NSDictionary * menuData = [[mediaResponse objectForKey:@" data"] objectAtIndex:iCount];

//检查数据库中是否存在记录,然后删除记录

for(dbMenuListArray中的AppMenuList *列表){

if([list.userID isEqualToString:[[UserDefaults defaultsInstance] getUserId]]){

[list MR_deleteEntity];

}

NSLog(@"列出项目%@",列表);

}

2 个答案:

答案 0 :(得分:1)

[MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext) {
    // Do your work to be saved here, against the `localContext` instance
    // Everything you do in this block will occur on a background thread
}

如果你做的是saveWithBlock而没有等待,那么多个请求几乎同时会导致多次保存,因此你会得到重复的记录。

答案 1 :(得分:0)

好的,我试着这样做:

[[NSManagedObjectContext MR_rootSavingContext] performBlockAndWait:^{
    //Get your data.
}];

我使用[MyEntity MR_findAllWithPredicate:myPredicate]获取数据。

希望它会有用。