objective-c - Xcode tvOS - 错误:您无权将文件“fileName.txt”保存在“Documents”文件夹中
问题描述
我在 Objective-C 中有一个 Xcode tvOS 项目。我正在尝试使用以下代码将示例 fileName.txt 文件保存到 Documents 文件夹中:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self applicationDocumentsDirectory];
NSString *path = [[self applicationDocumentsDirectory].relativePath
stringByAppendingPathComponent:@"fileName.txt"];
NSString* sampleText = @"Prova";
NSError* err;
[sampleText writeToFile:path atomically:YES
encoding:NSUTF8StringEncoding error:&err];
if(err != nil) {
NSLog(@"Error: %@", [err localizedDescription]);
}
}
/**
Returns the URL to the application's Documents directory.
*/
- (NSURL *)applicationDocumentsDirectory {
NSLog(@"%@", [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask] lastObject]);
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask] lastObject];
}
@end
但是当我运行应用程序时出现此错误:错误:您无权将文件“fileName.txt”保存在“Documents”文件夹中。
在 iOS 中,它可以代替。
解决方案
您无权访问 tvOS 上的文档。
这是来自 Apple(详情请参阅此处):
您的应用程序的本地存储是有限的
- tvOS 应用程序包的最大大小为 4 GB。此外,您的应用程序只能访问设备本地的 500 KB 持久存储(使用 NSUserDefaults 类)。在这个有限的本地存储之外,当空间不足时,操作系统必须可以清除所有其他数据。您有几个选项来管理这些资源:
- 您的应用可以在 iCloud 中存储和检索用户数据。您的应用可以将所需的数据下载到其缓存目录中。应用程序运行时不会删除下载的数据。但是,当空间不足且您的应用程序未运行时,这些数据可能会被删除。不要使用整个缓存空间,因为这会导致不可预知的结果。
- 您的应用可以使用按需资源打包只读资产。然后,在运行时,您的应用程序会请求它需要的资源,操作系统会自动下载和管理这些资源。了解如何以及何时加载新资产同时保持用户参与对于创建成功的应用程序至关重要。有关按需资源的信息,请参阅按需资源指南。这意味着为新 Apple TV 开发的每个应用程序都必须能够将数据存储在 iCloud 中并以能够提供出色客户体验的方式进行检索。
推荐阅读
- python - CMSIS- 非图像输入的 NN 量化问题
- azure - Azure SAS 令牌问题
- graphql - GraphQL 代码生成器 - 无法从 Nestjs 服务器端点加载我的 GQL 架构
- image - Vuetify 文本不会显示在轮播图像上
- c++ - libneo4j-client:无法连接,无法诊断
- jsp - 为什么我的 jsp 页面不能使用 https 而不是 http 解决包含 jsp 标签库的问题?
- asp.net-core-mvc - 树莓派;Asp.Net Core MVC NuGet 问题
- azure - 必应从 URL 反向图像搜索
- winapi - 在 python 中使用 pywin32 从远程连接访问本地 Outlook 应用程序
- javascript - Protractor 中过滤器功能的承诺如何得到解决?