【问题标题】:NSKeyedArchiver works on simulator but fails on tvOS deviceNSKeyedArchiver 在模拟器上工作,但在 tvOS 设备上失败
【发布时间】:2019-01-26 09:06:33
【问题描述】:

我正在将一个对象归档到一个文件中 - 在模拟器上它可以完美运行,但在 tvOS (Apple TV) 设备上却不能(换句话说,-(BOOL)archiveRootObject:toFile: 返回一个有趣的NO):

static NSString * _DocumentsDirectory() {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES);
    return paths[0];
}

和:

NSString *fullPath = [_DocumentsDirectory() stringByAppendingPathComponent:filename];
[NSKeyedArchiver archiveRootObject:obj toFile:fullPath];

其中filename = @"foo.data"obj 符合NSCoding

我尝试了不同的方法将路径和不同的目录放在一起,但结果是一样的。 我唯一的想法是我可能需要设置一些写入权限。

有什么想法吗?

【问题讨论】:

    标签: objective-c tvos nskeyedarchiver


    【解决方案1】:

    经过一番调查,我发现 Apple 允许您在 tvOS 应用程序中存储数据的唯一方式如下:

    因此,我选择使用 Cache 目录(仅在需要空间时才清除)用于我最终可以重新下载的数据,并选择 NSUserDefaults 用于我需要始终在本地访问的较小数据。

    【讨论】:

      猜你喜欢
      • 2010-11-01
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      相关资源
      最近更新 更多