핵심 데이터 : 백그라운드 NSManagedObjectContext에 대한 업데이트가 저장시 작동하지 않음

니 라브 바트

두 개의 관리되는 개체 컨텍스트가 있으며 일반적으로 권장 fetch되는대로 각각을 사용하고 싶습니다 update.

그러나 newBackgroundContext()내 데이터를 저장 하려는 모든 시도 는 실패했습니다. performBackgroundTask또한 작동하지 않았습니다.

사용하여 저장하는 viewcontext데 성공했지만 (아래 코드는 성공했습니다) 백그라운드 저장 기능을 갖는 목적을 무효화합니다. 또한 향후 성능이 저하 될 수 있습니다.

나는 이미 automaticallyMergesChangesFromParent = true두 가지 맥락에서 설정 시도 했지만 아무 소용이 없습니다.

CoreDataManager내 아래 코드에서 게으른 vars 반환 persistentContainercontext개체를 설정하는 상용구 클래스 입니다.

이 표준 문제를 처리하는 방법을 어디에나 표시하는 적절한 방법이 있습니까?

추신 :을 사용하여 대량의 개체를 삽입하려고하면 정상적으로 newBackgroundContext()작동합니다. 업데이트가 유일한 문제입니다. 아마도 viewContext.

PS + : 그 문제에 대해 내가 newBackgroundContext()가져 오기에 사용 하고 둘 다 저장하면 (내 UI가 아닌 아래 기능에서만) 작동합니다. 그러나 이것이 권장되는 접근 방식인지 모르겠습니다.

PS ++ : 나는 또한 newBackgroundContext()매번 새로운 것을 생성하지 않기 위해 lazy var로 래핑을 시도했는데 , 어쨌든 내부에서 발생 performBackgroundTask하지만이 방법은 여전히 ​​성공적으로 저장되지 않습니다.

class func updateRecord(recordId: String, data: Data)
{
    let fetchRequest = NSFetchRequest<MyModel>(entityName: "MyModel")
    let context = CoreDataManager.sharedInstance.queryContext  //wrapper for persistentContainer.viewContext which is used to fetch the intended object to update

    do
    {
        fetchRequest.predicate = NSPredicate(format: "recordId == %@", recordId)
        let result = try context.fetch(fetchRequest)
        guard let myModel = result.first
        else
        {
            throw CoreDataCustomError.ObjectNotFound
        }

        myModel.data = data

        try context.save() //works FINE!

        //what DOES NOT work:  try persistentContainer.newBackgroundContext().save() 

        //what DOES NOT work:  
        //persistentContainer.performBackgroundTask { (context) in
        //    context.save()
        //}
    }
    catch let customErr as CoreDataCustomError
    {
        print("Object does not exist in DB: \(customErr)")
    }
    catch let err
    {
        print("Error saving data \(recordId): \(err)")
    }
}
파웰로 2222

newBackgroundContext ()를 사용하여 가져오고 둘 다 저장하면 (내 UI가 아닌 아래 함수에서만) 작동합니다. 그러나 이것이 권장되는 접근 방식인지 모르겠습니다.

예, 올바른 접근 방식입니다.

일부 컨텍스트에서 데이터를 초기화 할 때 동일한 컨텍스트 내에서 저장해야합니다. 다른 컨텍스트를 저장하려고하면 다른 컨텍스트에 변경 사항이 없기 때문에 작동하지 않습니다.

하나의 컨텍스트를 사용하여 일부 데이터를 가져 오는 경우 :

let result = try context.fetch(fetchRequest)

그런 다음 수정합니다.

myModel.data = data

그것은 만이 맥락에서. 어떤 수단 당신이 그것을하지 않습니다 다른 컨텍스트를 저장하려고하면 참조 모델의 변경 및 데이터가 저장되지 않습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

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

분류에서Dev

신속한 핵심 데이터 : 카메라에서 이미지 저장

분류에서Dev

데이터베이스를 업데이트 한 후 사전로드 된 "핵심 데이터"데이터베이스가 올바른 새 데이터를 표시하지 않음

분류에서Dev

핵심 데이터 및 iCloud 동기화가 라이브 앱에서 작동하지 않음

분류에서Dev

핵심 데이터-경량 마이그레이션이 작동하지 않음

분류에서Dev

엔터티 모델에 대한 저장 프로 시저 및 함수가 업데이트되지 않음

분류에서Dev

Chrome 확장 프로그램의 팝업에서 백그라운드로 데이터가 전달되지 않음

분류에서Dev

핵심 데이터 일대 다 관계가 올바르게 / 예상대로 저장되지 않음

분류에서Dev

핵심 데이터 삭제가 작동하지 않음

분류에서Dev

핵심 데이터 NSPredicate가 작동하지 않음

분류에서Dev

HTTP Post를 처리하고 HTTP를 통해 다운로드 한 다음 핵심 데이터에 저장하는 올바른 방법

분류에서Dev

백그라운드 스레드에서 한 db에서 다른 db로 핵심 데이터 복사

분류에서Dev

핵심 데이터 동시성`performBlockAndWait :`NSManagedObjectContext 좀비

분류에서Dev

관계를 저장하지 않는 핵심 데이터

분류에서Dev

iOS-앱 삭제 및 백그라운드에서 핵심 데이터 업데이트 (목표 C)

분류에서Dev

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

분류에서Dev

핵심 데이터가 속성을 제대로 저장하지 않는 이유는 무엇입니까?

분류에서Dev

핵심 데이터 (Swift)를 사용하여 장치에 데이터를 저장 / 검색 할 수 없음

분류에서Dev

핵심 데이터는 장치에서 작동하지 않지만 시뮬레이터에서는 잘 작동합니다.

분류에서Dev

핵심 데이터에 여러 레코드를 저장하는 방법

분류에서Dev

Swift 3를 사용한 핵심 데이터에 대한 지침

분류에서Dev

핵심 데이터 : 소스 저장소에 대한 모델을 찾을 수 없음-시뮬레이터에서만?

분류에서Dev

핵심 데이터 신속한 의심이 데이터를 두 번째 뷰 컨트롤러로 푸시하지 않음

분류에서Dev

대시 인터랙티브 그래프가 Pandas 데이터 프레임에서 업데이트되지 않음

분류에서Dev

롤백으로 백그라운드에서 핵심 데이터 가져 오기 데이터

분류에서Dev

핵심 데이터 저장 방지

분류에서Dev

SQL Server 데이터베이스 백업 및 저장에 대한 VB.Net 코드가 작동하지 않습니다.

분류에서Dev

핵심 데이터 + Swift +로드 모델이 작동하지 않습니다.

분류에서Dev

감속기가 실행중인 작업에 대한 상태를 업데이트하지 않아서 redux 저장소 / 상태가 업데이트되지 않음

Related 관련 기사

  1. 1

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

  2. 2

    신속한 핵심 데이터 : 카메라에서 이미지 저장

  3. 3

    데이터베이스를 업데이트 한 후 사전로드 된 "핵심 데이터"데이터베이스가 올바른 새 데이터를 표시하지 않음

  4. 4

    핵심 데이터 및 iCloud 동기화가 라이브 앱에서 작동하지 않음

  5. 5

    핵심 데이터-경량 마이그레이션이 작동하지 않음

  6. 6

    엔터티 모델에 대한 저장 프로 시저 및 함수가 업데이트되지 않음

  7. 7

    Chrome 확장 프로그램의 팝업에서 백그라운드로 데이터가 전달되지 않음

  8. 8

    핵심 데이터 일대 다 관계가 올바르게 / 예상대로 저장되지 않음

  9. 9

    핵심 데이터 삭제가 작동하지 않음

  10. 10

    핵심 데이터 NSPredicate가 작동하지 않음

  11. 11

    HTTP Post를 처리하고 HTTP를 통해 다운로드 한 다음 핵심 데이터에 저장하는 올바른 방법

  12. 12

    백그라운드 스레드에서 한 db에서 다른 db로 핵심 데이터 복사

  13. 13

    핵심 데이터 동시성`performBlockAndWait :`NSManagedObjectContext 좀비

  14. 14

    관계를 저장하지 않는 핵심 데이터

  15. 15

    iOS-앱 삭제 및 백그라운드에서 핵심 데이터 업데이트 (목표 C)

  16. 16

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

  17. 17

    핵심 데이터가 속성을 제대로 저장하지 않는 이유는 무엇입니까?

  18. 18

    핵심 데이터 (Swift)를 사용하여 장치에 데이터를 저장 / 검색 할 수 없음

  19. 19

    핵심 데이터는 장치에서 작동하지 않지만 시뮬레이터에서는 잘 작동합니다.

  20. 20

    핵심 데이터에 여러 레코드를 저장하는 방법

  21. 21

    Swift 3를 사용한 핵심 데이터에 대한 지침

  22. 22

    핵심 데이터 : 소스 저장소에 대한 모델을 찾을 수 없음-시뮬레이터에서만?

  23. 23

    핵심 데이터 신속한 의심이 데이터를 두 번째 뷰 컨트롤러로 푸시하지 않음

  24. 24

    대시 인터랙티브 그래프가 Pandas 데이터 프레임에서 업데이트되지 않음

  25. 25

    롤백으로 백그라운드에서 핵심 데이터 가져 오기 데이터

  26. 26

    핵심 데이터 저장 방지

  27. 27

    SQL Server 데이터베이스 백업 및 저장에 대한 VB.Net 코드가 작동하지 않습니다.

  28. 28

    핵심 데이터 + Swift +로드 모델이 작동하지 않습니다.

  29. 29

    감속기가 실행중인 작업에 대한 상태를 업데이트하지 않아서 redux 저장소 / 상태가 업데이트되지 않음

뜨겁다태그

보관