0

我发现,我可以通过以下方法检测到 iCloud 上 UIDocument 的删除:

- (void)accommodatePresentedItemDeletionWithCompletionHandler:(void (^)(NSError *))completionHandler

该方法被正确调用,但我不知道在该方法中要做什么。目前我关闭文档,如果它仍然打开,但看起来文档在关闭时保存在旧路径上,所以文档重新出现。

我已经进行了激烈的搜索,但在 Apple 文档和任何论坛中都没有找到任何内容。

有人有过类似的经历还是有人正确处理了删除?

4

1 回答 1

2

我发现,我关闭了文档 2 次,在第二次关闭它之前,我保存了它。我删除了 saveToURL 方法,现在它按预期工作。

对于所有想要检测删除的人:使用以下代码在您的 UIDocument 子类中覆盖此方法:

    - (void)accommodatePresentedItemDeletionWithCompletionHandler:(void (^)(NSError *errorOrNil))completionHandler
{
    sceneLampDocument* presentedDocument = self;
    [presentedDocument closeWithCompletionHandler: ^(BOOL success) {
        NSError* error = nil;
        if (!success)
        {
            NSDictionary* userInfo = [NSDictionary dictionaryWithObjectsAndKeys:
                                      @"Could not close document that is being deleted on another device",
                                      NSLocalizedDescriptionKey, nil];
            error = [NSError errorWithDomain: @"some_suitable_domain"
                                        code: 101
                                    userInfo: userInfo];
        }

        completionHandler(error);  // run the passed in completion handler (required)

        dispatch_async(dispatch_get_main_queue(), ^
                       {
                           //[super accommodatePresentedItemDeletionWithCompletionHandler:completionHandler];

                           NSDictionary *userInfo = [NSDictionary dictionaryWithObject:self forKey:@"document"];
                           [[NSNotificationCenter defaultCenter] postNotificationName: @"documentDeletedOnAnotherDevice"
                                                                               object: self
                                                                             userInfo: userInfo];
                       });
        }];
}

我希望这会对某人有所帮助

于 2013-03-14T09:19:06.513 回答