首页 > 解决方案 > 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 中,它可以代替。

标签: objective-cxcodetvos

解决方案


您无权访问 tvOS 上的文档。

这是来自 Apple(详情请参阅此处):

您的应用程序的本地存储是有限的

  • tvOS 应用程序包的最大大小为 4 GB。此外,您的应用程序只能访问设备本地的 500 KB 持久存储(使用 NSUserDefaults 类)。在这个有限的本地存储之外,当空间不足时,操作系统必须可以清除所有其他数据。您有几个选项来管理这些资源:
  • 您的应用可以在 iCloud 中存储和检索用户数据。您的应用可以将所需的数据下载到其缓存目录中。应用程序运行时不会删除下载的数据。但是,当空间不足且您的应用程序未运行时,这些数据可能会被删除。不要使用整个缓存空间,因为这会导致不可预知的结果。
  • 您的应用可以使用按需资源打包只读资产。然后,在运行时,您的应用程序会请求它需要的资源,操作系统会自动下载和管理这些资源。了解如何以及何时加载新资产同时保持用户参与对于创建成功的应用程序至关重要。有关按需资源的信息,请参阅按需资源指南。这意味着为新 Apple TV 开发的每个应用程序都必须能够将数据存储在 iCloud 中并以能够提供出色客户体验的方式进行检索。

推荐阅读