핵심 데이터가 열거되는 동안 변경되었습니다.

Gaby Fitcal

Core Data에 성가신 문제가 있습니다. 내 앱은 iPhone에서 연락처를 가져 와서 데이터베이스에 저장해야합니다. 나는 백그라운드 스레드에서 그렇게하려고합니다.

위의 코드를 사용합니다.

[self performSelectorInBackground:@selector(fetchingContact) withObject:nil];


    -(void)fetchingContact{
    // Some Code
    for (int i = 0; i < nPeople; i++)
    {
    //Some Code
        NSManagedObjectContext *context = [APP_DELEGATE managedObjectContext];
        ABRecordID recordID = ABRecordGetRecordID(person);
        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:context];
        [fetchRequest setEntity:entity];
        NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"(contactId = '%d')",recordID]];
        [fetchRequest setPredicate:predicate];
        NSError *error = nil;
//crash
        NSArray *contactObjArray = [context executeFetchRequest:fetchRequest error:&error];
//crash
        if (error) {}
        Contact *contacts;
        if (contactObjArray.count == 0) {
            contacts = [NSEntityDescription insertNewObjectForEntityForName:@"Contact" inManagedObjectContext:context];
        }else {
            contacts = [contactObjArray objectAtIndex:0];
        }
    //Some Code
    }
    }

AppDelegate에서 :

- (NSManagedObjectContext *)managedObjectContext
{
     NSLog(@"managedObjectContext");
    // Returns ;the managed object context for the application (which is already bound to the persistent store coordinator for the application.)
     if (_managedObjectContext != nil) {
          return _managedObjectContext;
     }

     NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
     if (!coordinator) {
          return nil;
     }
     _managedObjectContext =  [[NSManagedObjectContext alloc]initWithConcurrencyType: NSMainQueueConcurrencyType];
     [_managedObjectContext setPersistentStoreCoordinator:coordinator];
     return _managedObjectContext;
}

여기에 저장하려고 시도 Core Data하지만 오류로 인해 충돌합니다.

* 포착되지 않은 예외 'NSGenericException'으로 인해 앱 종료, 이유 : '* 컬렉션 <__ NSCFSet : 0x15fad880>이 (가) 열거되는 동안 변경되었습니다 .'`이 줄에서 :

 NSArray *contactObjArray = [context executeFetchRequest:fetchRequest error:&error];

이미 온라인에서 검색했는데 많은 것을 찾았지만 도움이되지 않습니다. 그것을 실행하면 핵심 데이터가 변경되거나 연락처 엔터티가 변경되는 곳이 없습니다. 이 오류는 매우 이상합니다.

메인 스레드에서 실행하면 오류가 발생하지 않거나 충돌이 발생하지 않지만 해당 시간에 앱이 종료되면 (실행되는 동안) 모든 콘텐츠가 손실됩니다. Contact

제발 도와주세요. 더 많은 정보를 제공해야하는지 알려주세요.

데미안 Bannerot

이 오류는 핵심 데이터를 가져 오려고하는 동안 수정할 때 발생합니다.

또한 수행중인 루프의 원인이 될 수 있습니다. 다른 검색을 수행하기 전에 저장하지 않고 coredata에 새 객체를 삽입합니다. managedobjectcontext를 저장하십시오.

마음에 드는 코어 데이터에 성가신 문제가 있습니다. 내 앱은 iPhone에서 연락처를 가져 와서 데이터베이스에 저장해야합니다. 나는 백그라운드 스레드에서 그렇게하려고합니다.

위의 코드를 사용합니다.

[self performSelectorInBackground:@selector(fetchingContact) withObject:nil];


-(void)fetchingContact{
// Some Code
for (int i = 0; i < nPeople; i++)
{
//Some Code
    NSManagedObjectContext *context = [APP_DELEGATE managedObjectContext];
    ABRecordID recordID = ABRecordGetRecordID(person);
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:context];
    [fetchRequest setEntity:entity];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"(contactId = '%d')",recordID]];
    [fetchRequest setPredicate:predicate];
    NSError *error = nil;
    NSArray *contactObjArray = [context executeFetchRequest:fetchRequest error:&error];
    if (error) {}
    Contact *contacts;
    if (contactObjArray.count == 0) {
        contacts = [NSEntityDescription insertNewObjectForEntityForName:@"Contact" inManagedObjectContext:context];
        [context save:&error];
    }else {
        contacts = [contactObjArray objectAtIndex:0];
    }
//Some Code
}
}

그래도 문제가 해결되지 않으면 메서드가 여러 번 호출되었는지 확인하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

열거하는 동안 배열이 변경되었습니다-Swift

분류에서Dev

변경되는 동안 핵심 데이터에서 데이터베이스를 미리 보는 방법은 무엇입니까?

분류에서Dev

핵심 데이터의 setPropertiesToFetch에 잘못된 키 경로가 전달되었습니다.

분류에서Dev

핵심 데이터 오류 코드 = 134030 "저장하는 동안 오류가 발생했습니다."userInfo가 없습니다.

분류에서Dev

날짜가 NSStrings로 저장되는 핵심 데이터 검색

분류에서Dev

ios8 핵심 데이터 iCloud Today 위젯이 동기화되지 않음

분류에서Dev

핵심 데이터는 변경 사항을 저장하지 않습니다

분류에서Dev

로컬 변경이없는 동안 Git 분기가 분기되었습니다.

분류에서Dev

다중 관계가있는 핵심 데이터 하위 쿼리

분류에서Dev

내가 찾고있는 핵심 데이터입니까?

분류에서Dev

문자열 또는 이진 데이터가 잘립니다. 데이터를 제거하는 동안 문이 종료되었습니다.

분류에서Dev

문자열 또는 이진 데이터가 잘립니다. 데이터를 제거하는 동안 문이 종료되었습니다.

분류에서Dev

핵심 데이터가 빈 개체를 가져 오는 것 같습니다.

분류에서Dev

핵심 데이터 : 객체가있는 NSFetchedResultsController가 관계에 있습니다.

분류에서Dev

iCloud 및 핵심 데이터가 작동하지 않음-URLForUbiquityContainerIndentifier가 nil입니다.

분류에서Dev

핵심 데이터 엔티티가 업데이트되지 않음

분류에서Dev

핵심 데이터가있는 테이블보기의 이상한 동작

분류에서Dev

핵심 데이터가 활성화되어 있는지 Xcode 확인

분류에서Dev

iOS : 일대 다 관계가있는 핵심 데이터 업데이트 개체

분류에서Dev

핵심 데이터의 동적 변수 이름

분류에서Dev

핵심 데이터의 동적 변수 이름

분류에서Dev

핵심 데이터 가져 오는 중 [_NSObjectID_48_1 userName] : 인식 할 수없는 선택기가 인스턴스로 전송되었습니다.

분류에서Dev

관계에 대한 핵심 데이터 잘못된 액세스-관계 이름을 변경하여 해결 되었습니까?

분류에서Dev

Xcode 11.4.1 핵심 데이터 모델이 인식되지 않음

분류에서Dev

indexPath가 알려진 경우 핵심 데이터에서 항목 제거

분류에서Dev

마이그레이션없는 핵심 데이터 변경 데이터 모델

분류에서Dev

마이그레이션없는 핵심 데이터 변경 데이터 모델

분류에서Dev

카드로 제시 할 때 핵심 데이터가 저장되지 않음

분류에서Dev

Xcode는 "핵심 데이터"레코드를 관리합니다.

Related 관련 기사

  1. 1

    열거하는 동안 배열이 변경되었습니다-Swift

  2. 2

    변경되는 동안 핵심 데이터에서 데이터베이스를 미리 보는 방법은 무엇입니까?

  3. 3

    핵심 데이터의 setPropertiesToFetch에 잘못된 키 경로가 전달되었습니다.

  4. 4

    핵심 데이터 오류 코드 = 134030 "저장하는 동안 오류가 발생했습니다."userInfo가 없습니다.

  5. 5

    날짜가 NSStrings로 저장되는 핵심 데이터 검색

  6. 6

    ios8 핵심 데이터 iCloud Today 위젯이 동기화되지 않음

  7. 7

    핵심 데이터는 변경 사항을 저장하지 않습니다

  8. 8

    로컬 변경이없는 동안 Git 분기가 분기되었습니다.

  9. 9

    다중 관계가있는 핵심 데이터 하위 쿼리

  10. 10

    내가 찾고있는 핵심 데이터입니까?

  11. 11

    문자열 또는 이진 데이터가 잘립니다. 데이터를 제거하는 동안 문이 종료되었습니다.

  12. 12

    문자열 또는 이진 데이터가 잘립니다. 데이터를 제거하는 동안 문이 종료되었습니다.

  13. 13

    핵심 데이터가 빈 개체를 가져 오는 것 같습니다.

  14. 14

    핵심 데이터 : 객체가있는 NSFetchedResultsController가 관계에 있습니다.

  15. 15

    iCloud 및 핵심 데이터가 작동하지 않음-URLForUbiquityContainerIndentifier가 nil입니다.

  16. 16

    핵심 데이터 엔티티가 업데이트되지 않음

  17. 17

    핵심 데이터가있는 테이블보기의 이상한 동작

  18. 18

    핵심 데이터가 활성화되어 있는지 Xcode 확인

  19. 19

    iOS : 일대 다 관계가있는 핵심 데이터 업데이트 개체

  20. 20

    핵심 데이터의 동적 변수 이름

  21. 21

    핵심 데이터의 동적 변수 이름

  22. 22

    핵심 데이터 가져 오는 중 [_NSObjectID_48_1 userName] : 인식 할 수없는 선택기가 인스턴스로 전송되었습니다.

  23. 23

    관계에 대한 핵심 데이터 잘못된 액세스-관계 이름을 변경하여 해결 되었습니까?

  24. 24

    Xcode 11.4.1 핵심 데이터 모델이 인식되지 않음

  25. 25

    indexPath가 알려진 경우 핵심 데이터에서 항목 제거

  26. 26

    마이그레이션없는 핵심 데이터 변경 데이터 모델

  27. 27

    마이그레이션없는 핵심 데이터 변경 데이터 모델

  28. 28

    카드로 제시 할 때 핵심 데이터가 저장되지 않음

  29. 29

    Xcode는 "핵심 데이터"레코드를 관리합니다.

뜨겁다태그

보관