0

블록을 NSManagedObjectContext와 함께 사용하는 방법에 대한 도움을 받으십시오. 하나의 엔티티에 대해 비동기 적으로 여러 이미지를 다운로드하려고합니다. 내가 가진 데이터 구조는 다음과 같습니다 (이것은 psuedo 코드가 더 많으며 정확히 NSManagedObject 구문을 따르지 않습니다).블록을 NSManagedObjectContext와 함께 사용하십시오.

@interface SAImageDoc : NSObject 

@property(nonatomic, strong) NSString* imageUrl1; 
@property(readwrite) BOOL imageUrl1Downloaded; 
@property(nonatomic, strong) NSString* imageUrl2; 
@property(readwrite) BOOL imageUrl2Downloaded; 

@end 

블록 (AFNetworking)을 사용하여 이미지를 비동기식으로 다운로드하려고합니다. 이미지를 다운로드 한 후 다운로드 한 부울 값을 YES로 업데이트하여 CoreData에 저장하고 싶습니다. 내가 가진

질문은 다음과 같습니다

  1. 는 각 블록에 NSManagedObjectContext를 통과 됐나요? 블록이 다른 스레드에서 실행 중이며 NSManagedObjectContext가 스레드로부터 안전하지 않기 때문에 그렇게하는 것이 잘못되었습니다.
  2. 어떤 제안이 하나를 처리하는 방법? 1이 작동하지 않는 경우 알려진 예가 있습니까?

    도움 주셔서 대단히 감사합니다.


업데이트 :

좋아. 가브리엘, 마리오의 대답과 What is NSManagedObjectContext's performBlock: used for? 참조 감안할 때, 나는 여기에 생각 나는 할 것이다 무엇 : NSPrivateQueueConcurrencyType 또는 NSMainQueueConcurrencyType를 사용하여

  1. 인스턴스화 컨텍스트를;
  2. 각 컨텍스트에서 performBlock을 호출합니다.

도움 주셔서 감사합니다.

답변

0

질문에 간단히 대답하려면 다운로드 블록에 컨텍스트를 전달하고 컨텍스트의 -performBlock : 메서드를 사용하여 컨텍스트에 액세스하십시오.

관련 문제