NSBatchUpdateRequest 使用日志

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_31177681/article/details/79637420

原来是在context里面使用for循环修改数据,现在使用NSBatchUpdateRequest直接修改数据库数据然后把结果返回给context,解决大批量数据修改导致APP卡顿的问题


NSBatchUpdateRequest *batchRequest = [[NSBatchUpdateRequest alloc] initWithEntity:[QXChatMessage entity]];



    batchRequest.predicate = [NSPredicate predicateWithFormat:@"readState == %@ AND session == %@ AND msgStatus == %@", [NSNumber numberWithBool:UNREAD], session, [NSNumber numberWithInteger:QXChatMessageStatusNormal]];
    batchRequest.propertiesToUpdate = @{@"readState" : [NSNumber numberWithInt:1]};
    batchRequest.resultType = NSUpdatedObjectsCountResultType;
    NSManagedObjectContext *localContext = [NSManagedObjectContext MR_chatMessageContext];
    
    NSError *error = nil;
    NSBatchUpdateResult *batchResult = [localContext executeRequest:batchRequest error:&error];
    NSNumber *updateCount = batchResult.result;
    
    DDLogInfo(@"update %@ items in DataBase", updateCount);
    
    NSArray *unReadMessages = [self getUnreadIMMessageBySessionID:session.sessionID];
    
    DDLogInfo(@"There are %lu unReadMessages in chatMessageContext", unReadMessages.count);

猜你喜欢

转载自blog.csdn.net/sinat_31177681/article/details/79637420