您应该能够通过转至设置应用程序 - > iCloud->存储&备份 - >管理存储 - >应用程序名称,然后删除任何文件,以删除无处不在容器中的文件。我想你可能只能看到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);
}
}];
}
在error.userInfo NSLog中发布错误的详细信息(@“error is%@”,error.userInfo); –
最好像这样获得无处不在的容器'NSURL * iCloudURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:_ubiquityID];'其中'_ubiquityID'是您的应用程序的iCloud容器标识符。 –
而你的应用程序可能只有权限删除此目录内的任何内容。 –