gpt4 book ai didi

objective-c - iCloud 和 objective-c : evictUbiquitousItemAtURL does not appear to actually remove the local file, 即使它返回 true

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:11:20 26 4
gpt4 key购买 nike

我正在为一些项目编写一个简单的 iCloud 管理器。

目前我有一个小的测试代码来查看我的管理器是否成功地从设备的本地存储中逐出文件(并且没有从 iCloud 存储中删除它们)。为此,文档说明您使用:

evictUbiquitousItemAtURL:error:

删除指定的基于云的项目的本地副本。

我的测试片段是这样的:

if ([self evictLocaleFile:@"myTestFile.txt"])
NSLog(@"File was evicted successfully!");

[self listAllLocalFiles];

这里的想法是,我首先逐出指定的文件,然后列出本地 iCloud 文件夹中的本地文件,看看它是否仍然存在。

第一种方法简单地逐出指定的文件,如下所示:

-(BOOL) evictLocaleFile:(NSString *)name
{
NSURL *deletionURL = [[NSURL alloc] initFileURLWithPath:[ubiquityContainerURL path]];

deletionURL = [deletionURL URLByAppendingPathComponent:@"Documents" isDirectory:YES];
deletionURL = [deletionURL URLByAppendingPathComponent:name isDirectory:NO];
NSLog(@"EVICTION URL: %@", deletionURL.path);

NSError* err = nil;

BOOL didEvict = [[NSFileManager defaultManager] evictUbiquitousItemAtURL:deletionURL error:&err];

if (err != nil)
{
NSLog(@"Eviction error: %@", err.description);
}

return didEvict;
}

列出本地文件的方法如下所示:

-(NSArray*) listAllLocalFiles
{
NSString *localPath = [[ubiquityContainerURL path] stringByAppendingFormat:@"/Documents"];

NSLog(@"PATH: %@", localPath);

NSArray* files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:localPath error:nil];

for (NSString* fileName in files)
{
NSLog(@"FILE %@", fileName);
}

return files;
}

现在奇怪的是,当我执行该程序时,它确实声明它已成功驱逐文件。但是该文件仍然在语言环境文件下列为存在?此时文件不应该被完全删除并且不存在吗?我不确定为什么文件没有被删除。

我什至尝试先保存文件,然后关闭 WIFI 并再次运行代码以确保它不是因为 iCloud 强制再次下载文件,但这并没有解决问题。

有人知道会发生什么吗?

最佳答案

您是否尝试过 NSFileManagerremoveItemAtURL:error:

我使用此方法从 iCloud 中删除文件,效果很好。

根据文档,evictUbiquitousItemAtURL:error:描述为,它仅删除指定的基于云的项目的本地副本。

关于objective-c - iCloud 和 objective-c : evictUbiquitousItemAtURL does not appear to actually remove the local file, 即使它返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12621165/

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