Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 正在删除与核心数据相关的对象_Ios_Cocoa Touch_Core Data - Fatal编程技术网

Ios 正在删除与核心数据相关的对象

Ios 正在删除与核心数据相关的对象,ios,cocoa-touch,core-data,Ios,Cocoa Touch,Core Data,我目前在核心数据方面遇到了一个奇怪的问题。我正在编写的应用程序从服务器下载大量数据,这些数据被转换成核心数据对象并存储。该设备还可以创建新对象并将其上载到服务器。其中一个对象是文档,它本质上是文件的表示形式 这方面的模型是MPDocument。文档还可以链接到MPPlace模型和MPUser模型(用户创建文档,文档属于位置) 我从服务器下载对象没有问题,所有关系都被正确地创建和分配。问题在于我试图在设备本身上创建新文档时。文档被创建,我设置了所有的关系,文档被上传,一切看起来都很好。但是,当我通

我目前在核心数据方面遇到了一个奇怪的问题。我正在编写的应用程序从服务器下载大量数据,这些数据被转换成核心数据对象并存储。该设备还可以创建新对象并将其上载到服务器。其中一个对象是文档,它本质上是文件的表示形式

这方面的模型是
MPDocument
。文档还可以链接到
MPPlace
模型和
MPUser
模型(用户创建文档,文档属于位置)

我从服务器下载对象没有问题,所有关系都被正确地创建和分配。问题在于我试图在设备本身上创建新文档时。文档被创建,我设置了所有的关系,文档被上传,一切看起来都很好。但是,当我通过核心data viewer工具检查数据库时,所有文档对象都没有位置关系的值。这会发生在所有现有文档上,而不仅仅是新文档。我真的搞不懂发生了什么事

我是这样创建文档的:

   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];
调用success块时,文档对象确实设置了位置关系。所以,即使上传完成了,位置也设置好了,所以我现在真的很困惑,关系在哪里被完全清除

文档上载器的外观如下所示:

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

我搞不清楚到底发生了什么,也搞不清楚为什么会把关系搞清楚。有人能帮忙吗

更新

我仔细研究了一下,发现调用submit块时会出现错误。评出

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

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

好吧,我不完全确定发生了什么或者为什么,但是在处理代码、清理项目和重新启动笔记本电脑之间,它似乎已经修复了自己,所以不知道问题是什么,但目前似乎还可以。非常困惑:S