gpt4 book ai didi

ios - NSFileWrapper 在来自 iCloud 时失败并在本地目录中工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:45:19 25 4
gpt4 key购买 nike

我在将 NSFileWrapper 文档与 iCloud 同步时遇到问题。我能够创建我的包装器并将其保存到我无处不在的容器中。

当我尝试从创建它的设备读取它时,它起作用了。当我尝试从另一台从 iCloud 获取它的设备读取它时,它崩溃了。

部分代码:

这个函数添加一个带有 NSString 的包装器容器

- (void) addNSString:(NSString*)_string toFileWrapper:(NSFileWrapper*)_wrapper forKey:(NSString*)_key {

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:_string];

if(data) {

[_wrapper addRegularFileWithContents:data preferredFilename:_key];
}

然后我是这样解码的:

- (id) unarchiveObjectFromWrappers:(NSDictionary*)_wrappers withKey:(NSString*)_key {

id value = nil;

NSFileWrapper *wrapper = [_wrappers valueForKey:_key];
if(wrapper) {

NSData *data = [wrapper regularFileContents];

if(data) {

value = [NSKeyedUnarchiver unarchiveObjectWithData:data];
}
}

return value;
}

解码部分在一个设备上工作,而不在其他设备上工作(当 NSKeyedUnarchiver 尝试从 NSData 取消存档时,EXC_BAD_ACCESS。NSData 看起来不错,它具有适当的长度和所有内容,但是当我尝试记录其数据时,例如它崩溃)。

我的猜测是 NSFileWrapper 不会下载它的全部内容,只会下载它的结构,我必须做一些事情才能让它可用。但我不知道是什么。

有什么想法吗?

========

编辑:

NSURLUbiquitousItemIsDownloadedKey 说文件已下载,但如果我尝试将它复制到沙箱,它会失败并出现此错误:“操作无法完成。文件描述符错误”

所以文件要么没有正确上传到 iCloud,要么没有正确下载...

最佳答案

这也把我逼疯了。解决方案相当简单,但 Apple 完全没有记录。您必须专门下载该文件。只有文件包装器会自动下载,但不会自动下载其内容。这就是支票显示文件存在的原因。

在复制文件之前,调用如下:

[[NSFileManager defaultManager]startDownloadingUbiquitousItemAtURL:cloudURL error:nil];

相关:Cannot sync simple text file with iCloud (bad file descriptor)

关于ios - NSFileWrapper 在来自 iCloud 时失败并在本地目录中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14663625/

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