iOS : 핵심 데이터 DB를 업데이트하려면 많은 시간이 필요합니다.

cyclingIsBetter

내 프로젝트에서 다음과 같이 만든 JSON 파일을 다운로드해야합니다.

[{"id":"2","n":"One"},{"id":"2","n":"Two"},{"id":"2","n":"Three"},...]

내 코드는 다음과 같습니다.

- (void) startPopulate:(NSArray *)array{

    NSManagedObjectContext *context = [[self sharedAppDelegate] managedObjectContext];

    NSFetchRequest *fetchRequest=[NSFetchRequest fetchRequestWithEntityName:@"Myentity"];
    NSError *error = nil;

    for (id element in array){

        [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"id == %@",[element objectForKey:@"id"]]];
        Myentity *myE = [[context executeFetchRequest:fetchRequest error:&error] lastObject];

        //update
        if (myE != nil){

            myE.id_e = [element objectForKey:@"id"];
            myE.name = [element objectForKey:@"n"];
        }

        //new element
        else{

            Myentity *myE = [NSEntityDescription insertNewObjectForEntityForName:@"Myentity" inManagedObjectContext:context];
            myE.name = [element objectForKey:@"n"];
            myE.id_e = [element objectForKey:@"id"];
        }
    }

    if (![context save:&error]) {
        NSLog(@"couldn't save: %@", [error localizedDescription]);
    }
    else{

        NSLog(@"DB UPDATED");
    }
}

보시다시피 사전 배열을 메서드에서 전달하고 엔티티가 있는지 여부를 확인합니다. 그것은 잘 작동하고 나는 특정 문제가 없습니다. '문제'는 호출하는 방법이라면 12000 개의 요소가 있고이 메서드는 약 53 초 동안 실행된다는 것입니다. 매우 느립니다. 더 빨리 만들기 위해 어떤 유형의 솔루션을 채택 할 수 있습니까? 아니면이 메서드를 백그라운드 프로세스 안에 넣어야합니까? 감사

Fogmeister

백그라운드 프로세스에 넣어야합니까?

물론. 백그라운드 스레드를 시작하고 모든 작업을 수행 할 기본 컨텍스트에서 자식 컨텍스트를 만듭니다.

그 밖에 할 수있는 일

관리 개체 컨텍스트에 대한 저장되지 않은 모든 변경 사항은 메모리에 저장됩니다. 저장하기 전에 수천 번 변경하는 것은 많은 메모리를 필요로하지만 저장 시간이 오래 걸리기 때문에 권장하지 않습니다.

업데이트를 한 번에 100 개의 변경 사항으로 일괄 처리하고 각 블록 100 개를 저장할 수 있습니다.

대안

앱에 대해 이러한 항목을 항상로드하는 경우 해당 항목을 DB에 미리로드하고 앱 자체에 번들링 할 수도 있습니다.

이렇게하면 이미 거기에 있으므로 런타임에 저장할 필요가 없습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

핵심 데이터 테이블 iOS에서 데이터를 검색하려면 어떻게해야합니까?

분류에서Dev

iOS : JSON에서 핵심 데이터 DB 업데이트

분류에서Dev

IOS 기존 핵심 데이터에 더 많은 관계를 추가 한 후 핵심 데이터를 활용하는 방법

분류에서Dev

iOS 핵심 데이터를 사용해야합니까?

분류에서Dev

iOS에서 다 대다 관계를 설정하려면 어떻게해야합니까? (핵심 데이터)

분류에서Dev

한 번에 많은 객체를 핵심 데이터에 입력

분류에서Dev

Swift 3에서 핵심 데이터를 필터링하는 데 도움이 필요합니다.

분류에서Dev

핵심 데이터의 개체를 업데이트하는 방법은 무엇입니까?

분류에서Dev

iOS 7의 핵심 데이터를 사용하여 이미지 다운로드

분류에서Dev

iOS 7의 핵심 데이터를 사용하여 이미지 다운로드

분류에서Dev

Xcode 11은 핵심 데이터 엔티티를 인식하지 못합니다.

분류에서Dev

많은 값을 포함하는 핵심 데이터 개체 업데이트

분류에서Dev

Objective C를 사용하여 iOS의 핵심 데이터에서 데이터를 필터링하는 방법

분류에서Dev

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

분류에서Dev

핵심 데이터는 레코드를 어떻게 업데이트합니까?

분류에서Dev

핵심 데이터를 업데이트하고 사용자가 저장 한 데이터를 유지하는 방법은 무엇입니까?

분류에서Dev

핵심 데이터는 필터에서 집계 함수를 사용합니다.

분류에서Dev

iOS의 핵심 데이터, 색인이 범위를 벗어남

분류에서Dev

iOS의 핵심 데이터에 JSON 데이터를 저장하는 방법

분류에서Dev

핵심 데이터 값은 Nil을 반환합니다.

분류에서Dev

SwiftUI에서 필터링 된 핵심 데이터를 합산하는 방법은 무엇입니까?

분류에서Dev

iOS 핵심 데이터 연결

분류에서Dev

핵심 데이터 iOS-NSInvalidArgumentException + entityForName : nil

분류에서Dev

@world 세트를 업데이트하는 데 얼마나 많은 시간이 필요합니까?

분류에서Dev

iOS의 핵심 데이터에 json 구문 분석 데이터를 추가하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

핵심 데이터 sqlite 데이터베이스를 암호화하는 방법은 무엇입니까?

분류에서Dev

iOS 핵심 데이터 일대 다 관계

분류에서Dev

iOS 푸시 알림 앱에서 핵심 데이터를 사용해야합니까?

Related 관련 기사

  1. 1

    핵심 데이터 테이블 iOS에서 데이터를 검색하려면 어떻게해야합니까?

  2. 2

    iOS : JSON에서 핵심 데이터 DB 업데이트

  3. 3

    IOS 기존 핵심 데이터에 더 많은 관계를 추가 한 후 핵심 데이터를 활용하는 방법

  4. 4

    iOS 핵심 데이터를 사용해야합니까?

  5. 5

    iOS에서 다 대다 관계를 설정하려면 어떻게해야합니까? (핵심 데이터)

  6. 6

    한 번에 많은 객체를 핵심 데이터에 입력

  7. 7

    Swift 3에서 핵심 데이터를 필터링하는 데 도움이 필요합니다.

  8. 8

    핵심 데이터의 개체를 업데이트하는 방법은 무엇입니까?

  9. 9

    iOS 7의 핵심 데이터를 사용하여 이미지 다운로드

  10. 10

    iOS 7의 핵심 데이터를 사용하여 이미지 다운로드

  11. 11

    Xcode 11은 핵심 데이터 엔티티를 인식하지 못합니다.

  12. 12

    많은 값을 포함하는 핵심 데이터 개체 업데이트

  13. 13

    Objective C를 사용하여 iOS의 핵심 데이터에서 데이터를 필터링하는 방법

  14. 14

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

  15. 15

    핵심 데이터는 레코드를 어떻게 업데이트합니까?

  16. 16

    핵심 데이터를 업데이트하고 사용자가 저장 한 데이터를 유지하는 방법은 무엇입니까?

  17. 17

    핵심 데이터는 필터에서 집계 함수를 사용합니다.

  18. 18

    iOS의 핵심 데이터, 색인이 범위를 벗어남

  19. 19

    iOS의 핵심 데이터에 JSON 데이터를 저장하는 방법

  20. 20

    핵심 데이터 값은 Nil을 반환합니다.

  21. 21

    SwiftUI에서 필터링 된 핵심 데이터를 합산하는 방법은 무엇입니까?

  22. 22

    iOS 핵심 데이터 연결

  23. 23

    핵심 데이터 iOS-NSInvalidArgumentException + entityForName : nil

  24. 24

    @world 세트를 업데이트하는 데 얼마나 많은 시간이 필요합니까?

  25. 25

    iOS의 핵심 데이터에 json 구문 분석 데이터를 추가하는 방법은 무엇입니까?

  26. 26

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

  27. 27

    핵심 데이터 sqlite 데이터베이스를 암호화하는 방법은 무엇입니까?

  28. 28

    iOS 핵심 데이터 일대 다 관계

  29. 29

    iOS 푸시 알림 앱에서 핵심 데이터를 사용해야합니까?

뜨겁다태그

보관