2013-01-02 2 views
0

현재 코어 데이터에 이상한 문제가 있습니다. 내가 쓰고있는 응용 프로그램은 핵심 데이터 개체로 변환되어 저장되는 서버에서 많은 데이터를 다운로드합니다. 또한 장치는 새 개체를 만들어 서버에 업로드 할 수 있습니다. 이러한 객체 중 하나는 본질적으로 파일을 나타내는 문서입니다.코어 데이터 관련 오브젝트가 삭제 중임

이 모델의 모델은 MPDocument입니다. 문서를 MPPlace 모델과 MPUser 모델에 연결할 수도 있습니다 (사용자는 문서를 만들고 문서는 작업 영역에 속합니다).

서버에서 개체를 다운로드하는 데 아무런 문제가 없으며 모든 관계를 만들고 올바르게 할당하고 있습니다. 문제는 장치 자체에서 새 문서를 만들려고 할 때 발생합니다. 문서가 만들어지고 모든 관계를 설정하면 문서가 업로드되고 모든 것이 잘된 것처럼 보입니다. 그러나 핵심 데이터 뷰어 도구를 통해 데이터베이스를 검사 할 때 모든 문서 개체에는 작업 영역 관계에 대한 가치가 없습니다. 이것은 새로운 문서뿐만 아니라 모든 기존 문서에서 발생합니다. 나는 정말로 무슨 일이 일어나는지 알 수 없다!

그래서 같은 문서를 만드는거야 :

성공 블록이 호출
MPDocumentUploader *uploader = [[MPDocumentUploader alloc] initWithDocument:doc]; 
    uploader.requestDelegate = self; 
     uploader.successBlock = ^(MPDocumentUploader *uploader, MPDocument *doc) { 
      NSLog(@"Got doc = %@", doc); 
     }; 
[uploader upload]; 

, 문서 객체가 가지고있다 :

MPUser *current = [MPUser currentUser]; 
    MPDocument *doc = [[MPDocument alloc] init]; 
      doc.name = @"App Upload"; 
    doc.local_url = [NSString stringWithFormat:@"%@", [info valueForKey:UIImagePickerControllerReferenceURL]]; 
doc.local_url_type = @(MPDocumentUrlTypeAsset); 
      doc.user = current; 

[current addCreatedDocumentsObject:doc]; 
[doc setValue:self.place forKey:@"place"]; 
[self.place addDocumentsObject:doc]; 

나는 모든 업로드를 처리하는 문서 업 로더가 장소 관계가 설정되었습니다. 그래서 일단 업로드가 끝나고 나면 장소가 설정되므로 관계가 완전히 삭제 된 곳으로 지금은 정말 혼란 스럽습니다.

문서 업 로더는 다음과 같이 보입니다 :

- (void) upload 
{ 
    .... retrieve the local file and turn into NSData. This is fine 
    MPRequest *request = [MPRequest requestWithURL:_url]; 
    [MPUser signRequest:request]; 
    [request setDelegate:_requestDelegate]; 
    [request setRequestMethod:@"POST"]; 
    [request mountDocumentUploader:self]; 

    [request submit:^(MPResponse *resp, NSError *error) { 
     if (!error) { 
      NSDictionary *data = (NSDictionary *)[resp paramForKey:@"data"]; 
      if (data) { 
       NSLog(@"Document = %@", _document); 
       _document.url = [data objectForKey:@"url"]; 
       _document.objID = [data objectForKey:@"id"]; 
       [_document saveLocally]; 
      } 

      if (_successBlock) { 
       _successBlock(self, _document); 
      } 
     } else { 
      if (_failBlock) { 
       _failBlock(self, error); 
      } 
     } 
    }]; 
} 

MPRequest 클래스는 모든 실제 업로드 및 서버 요청을 처리를하지만, 실제로 MPDocument 물체를 만지하지 않습니다.

나는 무슨 일이 일어나고 있는지, 왜 그것이 관계를 정리하는지 알 수 없습니다. 제발 누군가 도와 줄 수 있어요!?

업데이트

나는 주위를 연주하고, 제출 블록이 호출 될 때 오류가 발생하는 것으로 나타났습니다. 댓글 달기

이 의미하는대로 작동하지만, 지금은 분명히 그 값이 설정되어 있지 않습니다. 한 번에 하나씩 그 라인을 하나씩 추가하면 문제가 발생하므로 간단히 편집하면 문제가 해결됩니다. 아직 아무런 단서가없는 이유는 무엇입니까 : (

답변

0

괜찮아요. 내가 무슨 일이 일어난 건지, 왜 그런지 모르겠지만, 코드를 만지작 거리고, 프로젝트를 청소하고, 내 노트북을 다시 시작하는 사이에 단서가 아닌 것처럼 보입니다. 무슨 문제 였지만 현재는 괜찮아 보입니다. 매우 혼란 스럽습니다 : S

관련 문제