2014-12-12 4 views
2

구문 분석 응용 프로그램이 있고 캐싱/오프라인 사용을 위해 로컬 데이터 저장소를 사용하려고합니다. 내 응용 프로그램 대리인에서 [Parse enableLocalDatastore];을 설정했습니다. (서버) 내 쿼리에서PFQuery pinAllInBackground : 블록 : 완료되지 않음

, 나는 정상적인 쿼리를 만들고 있어요,하지만 난 가져 오기에 결과를 고정하고 있습니다 :

[followingsQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    [PFObject pinAllInBackground:objects block:^(BOOL succeeded, NSError *error) { 
     NSLog(@"er: %@", error); 
    }]; 
    ... //rest of my handler 
}]; 

그러나, 완료 블록 (NSLog(@"er: %@", error);)가 호출되지 않습니다. 오류조차 없습니다. 나는 모든 곳에서 브레이크 포인트를 가지고있다. pinAllInBackground:block:이 호출되었지만 완성 처리기가 호출되지 않습니다. (내 앱은 2 분 동안 똑바로 실행되었으므로 100 개의 개체 만 고정되어 즉각적으로 처리됩니다.) 나는 또한 pinAllInBackground:withName:block:을 시도했지만 차이점은 없다. 나는 pinAll:을 시도했지만 호출 스레드를 차단하지 않고 리턴합니다 (CPU를 소비하지는 않습니다). 이 문제를 어떻게 해결할 수 있습니까? 참고로

:

답변

4

이 중첩 inBackground 타입을 실행할 때 내가 경험 한 알려진 버그입니다 메서드를 다른 구문 내부에 inBackground 형식 메서드. 현재 해결 방법은 Grand Central Dispatch와 같은 다른 디스패치 방법을 사용하는 것입니다.

이 시도 :

[followingsQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     NSError *error = nil; 
     id result = [PFObject pinAll:objects error:&error]; 
     if (error) { 
      NSLog("error: %@", error); 
     } 
    }); 
}]; 
+0

그것이 효과가 있지만 지금 다음과 같은 오류가 발생합니다 : *** 캐치되지 않은 예외 'NSInternalInconsistencyException'으로 인해 응용 프로그램을 종료합니다. 이유 : '존재하지 않는 uuid 1DF77D29-3FCD-4657-BC24-9AB0BF89C987'을 찾으려고 시도했습니다. any 그 하나 제안? (응용 프로그램이 충돌합니다!) –

+0

UUID를 쿼리의 일부로 쿼리하고 있습니까? –

+0

아니, 오늘도이 오류를봤을 때까지 Parse 객체에 uuids가 있다는 것을 알지 못했습니다. :) –

0

당신은 로컬 데이터 저장소를 조회하는 방법에 대한 자신의 문서 봤어

https://parse.com/docs/ios_guide#localdatastore-find/iOS

+0

을 분명히. 내 질문과 붙여 넣은 링크를 읽으면 패턴이 동일하다는 것을 알 수 있습니다. –

+0

그래도 관련이있을 수 있습니다 : http://stackoverflow.com/questions/27435725/enabling-local-data-store-on-parse-by-calling-enablelocaldatastore-before-initia –

+0

같은 오류가 발생하지 않으면 다른 문제가 있습니다. 제안한 코드를 구현하려 했습니까? [[findInBackground]] continueWithBlock :^id (BFTask * 작업) { } – soulshined

관련 문제