如何使用 NSPersistentCloudKitContainer(CloudKit with Core Data)读取数组?

How to read arrays with NSPersistentCloudKitContainer (CloudKit with Core Data)?

我在 CloudKit 上的核心 Data/type 上的实体中有 [String] 和 [Int] 属性,它们分别是 String 列表和 Int64 列表。我正在尝试通过 NSPersistentCloudKitContainer(public 服务器)同步它们。所有其他属性都正确同步,但是这两个根本不同步。其他的很简单——字符串、日期、Int64/Int。我也想让它们同步。

它们都是可变形的,它们各自的 Custom class 设置为 [String] 和 [Int]。 codegen 是 Manual/None,因此我可以创建未包装的属性供以后使用。

当我 运行 应用程序首次启动时,我也得到了 CKRecord 和他们的数据 - 我的意思是我在调试中看到他们在下载的记录信息中的值。但是,当我检查核心数据时,它告诉我 nil。

我试过同时设置 NSSecureUnarchiveFromData 和 NSSecureUnarchiveFromDataTransformerName,但没有成功。

我很清楚数组的数据已下载,我不明白为什么 Core Data 不喜欢数组。

好的,成功解决了:

  1. 它不能是 CloudKit 上任何类型的列表,而是字节。

  2. 剩下的就是在上传的时候简单的把数组转成NSData。我用 Data

    做到了

    让 archivedString = 试试? NSKeyedArchiver.archivedData(withRootObject: [String], requiringSecureCoding: true)

[Int] 也一样。