gpt4 book ai didi

ios - 如何删除 iPhone 上的 iCloud 无处不在的容器?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:07:05 38 4
gpt4 key购买 nike

我遇到了与 this question 相同的问题当我删除应用程序时,iCloud 无处不在的容器没有被清理。

但是当我尝试删除无处不在的容器时,我收到一条错误消息(操作无法完成。(Cocoa 错误 513。))。我怎样才能删除它?这是我正在使用的:

NSString *path = @"/private/var/mobile/Library/Mobile Documents/XXXXXX";
[[NSFileManager defaultManager] removeItemAtPath:path error:&error];

编辑:即使我删除了设备上的应用程序和所有 iCloud 数据(设置应用程序->iCloud->存储和备份->管理存储->应用程序名称),iCloud 无处不在的容器中仍有一些数据遗留。这是我第一次启动应用程序时要删除的数据(以防用户重新安装应用程序)。

最佳答案

您应该能够通过转到设置应用程序->iCloud->存储和备份->管理存储->应用程序名称,然后删除任何文件来删除 ubiquity 容器内的文件。我认为您可能只会看到 iCloud/Documents 目录中的文件,因此您可能需要代码来清除其他任何内容。

或者使用 Mac 并转到 ~/Library/Mobile Documents 并删除那里的文件。

要获取 iCloud 容器,请使用:

NSURL *iCloudURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:ubiquityID];

其中 ubiquityID 是您的应用 iCloud 容器 ID。

要列出 iCloud 容器中的所有文件,请使用类似这样的方法传入 iCloudURL

/*! Recursively lists all files

@param dir The directory to list
@param padding A string padding to indent the output depending on the level of recursion
*/
- (void)listAllFilesInDirectory:(NSURL*)dir padding:(NSString*)padding {

NSArray *docs = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:dir includingPropertiesForKeys:nil options:0 error:nil];

for (NSURL* document in docs) {

FLOG(@" %@ %@", padding, [document lastPathComponent]);

BOOL isDir;
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:document.path isDirectory:&isDir];

if (fileExists && isDir) {
[self listAllFilesInDirectory:document padding:[NSString stringWithFormat:@" %@", padding]];
}

}
}

要从无处不在的容器中删除内容,您需要像这样使用 fileCoordinator:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
NSFileCoordinator* fileCoordinator = [[NSFileCoordinator alloc] initWithFilePresenter:nil];

[fileCoordinator coordinateWritingItemAtURL:fileURL options:NSFileCoordinatorWritingForDeleting
error:nil byAccessor:^(NSURL* writingURL) {
NSFileManager* fileManager = [[NSFileManager alloc] init];
NSError *er;
//FLOG(@" deleting %@", writingURL);
bool res = [fileManager removeItemAtURL:writingURL error:&er];
if (res) {
LOG(@" iCloud files removed");
}
else {
LOG(@" document NOT removed");
FLOG(@" error %@, %@", er, er.userInfo);
}
}];
}

关于ios - 如何删除 iPhone 上的 iCloud 无处不在的容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21058596/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com