2013-01-02 67 views
0

我目前被困在核心数据的一个奇怪的问题。我正在写的应用程序会从服务器下载一堆数据,并将其转换为核心数据对象并存储。该设备还可以创建新的对象并将其上传到服务器。其中一个对象是一个基本上是文件表示的文档。核心数据相关对象被删除

这个模型是MPDocument。文档还可以链接到MPPlace模型和MPUser模型(用户创建文档,文档属于地点)。

我没有问题从服务器下载对象,并且正在创建和正确分配所有关系。当我尝试在设备上创建一个新文档时,问题就在于此。文档被创建,并且我设置了所有的关系,文档被上传并且一切看起来都很好。但是,当我通过核心数据查看器工具检查数据库时,所有文档对象都没有关于地点关系的值。这发生在所有现有文件上,而不仅仅是新文件。我真的无法弄清楚发生了什么事!

我创建的文档,像这样:

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]; 

然后我有一个文件上传处理所有上传:

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

当成功块被调用时,文档对象是否有地点关系集。因此,即使上传完成后,该地点也已设置,所以我现在非常困惑,关于完全清除关系的位置。

文件上传看起来是这样的:

- (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对象。

我无法弄清楚发生了什么事情或为什么它清除了关系。请有人帮忙!?

更新

我打得四周,发现当提交块被调用时出现错误。注释掉

_document.url = [data objectForKey:@"url"]; 
_document.objID = [data objectForKey:@"id"]; 
[_document saveLocally]; 

按照它的意思工作,但现在这些值显然没有设置。将这两行中的任何一行单独添加回来仍然会导致此问题,因此似乎只是简单地编辑它就会破坏它。仍然不知道为什么虽然:(

回答

0

好吧我不完全确定发生了什么或为什么,但在代码摆弄,清理项目,并重新启动我的笔记本电脑之间,它似乎已经修复自己所以不是一个线索这个问题是什么,但目前似乎没问题。非常困惑:S