tvOS应用程序编程指南 简要说明
Apple TV 上的应用程序没有持久的本地存储。这意味着为新 Apple TV 开发的每个应用程序都必须能够将数据存储在 iCloud 中并以提供出色客户体验的方式检索数据。
这是否意味着 NSUserDefaults 不可用?有哪些机制可用于数据存储?
tvOS应用程序编程指南 简要说明
Apple TV 上的应用程序没有持久的本地存储。这意味着为新 Apple TV 开发的每个应用程序都必须能够将数据存储在 iCloud 中并以提供出色客户体验的方式检索数据。
这是否意味着 NSUserDefaults 不可用?有哪些机制可用于数据存储?
根据 devforums 上的一位 Apple 员工的说法,您可以在 tvOS 上使用 NSUserDefaults 来处理多达 500 kb 的数据:
您可以按照文档将 NSUserDefaults 用于 TVOS。
Apple 真的希望您(和 AppleTV 客户)注册并使用 iCloud。
介绍性段落:
Apple TV 上的存储空间是有限的,并且无法保证存储在设备上的信息将在用户下次打开您的应用程序时可用。此外,为了在多个设备之间共享用户的数据,您需要将用户的信息存储在 Apple TV 以外的其他地方。Apple 为 Apple TV 提供了两种共享存储选项:iCloud Key-Value Storage (KVS) 和 CloudKit。
对于小于 1 兆的文件,您将使用 iCloud 键值存储 (KVS)。对于超过 1 Meg 的存储空间,您将使用 CloudKit。
为了跟进@vegashacker 的回答,同一位苹果工作人员还说:
您还可以使用应用程序临时和缓存目录在本地存储内容,但请注意,这些数据将被清除。
当您的应用程序不再运行时,例如当资源处于压力之下或重新启动时,可能会发生清除。
NSUserDefaults 可用,但在 tvOS 上的大小有限。根据论坛上的 Apple 工作人员的说法,“NSUserDefaults 是允许的,最多支持 500KB 的数据。” 以及“行为与 iOS 相同:只要用户不从设备中删除应用程序,NSUserDefaults 就会一直存在。”
Also according to NSUserDefaults.h header "NSUserDefaultsSizeLimitExceededNotification is posted on the main queue when more data is stored in user defaults than is allowed. Currently there is no limit for local user defaults except on tvOS, where a warning notification will be posted at 512kB, and the process terminated at 1MB. For ubiquitous defaults, the limit depends on the logged in iCloud user."