0

在我的应用程序中,我有一个记录类型 (UserActivity),它只存储用户想要保存到他们的个人资料中的图像。此记录类型仅包含一个属性 - 对另一个记录类型(例如,RecordTypeA)的 CKReference。它完美地工作......我能够通过引用存储和检索数据以构建图像并在屏幕上适当地显示它。但是,我刚刚意识到我需要向 UserActivity 记录类型添加第二个属性,这将是对不同记录类型(称为 RecordTypeB)的 CKReference。记录类型 B 是需要单独识别的第二种图像。因此,UserActivity 中的每一行现在将有 2 个可能的 CKReferences 中的 1 个,但不是两者都有。

我可以毫无问题地保存新的 RecordTypeB 引用,但结果有几个问题。首先,当我保存它时,无论是通过代码还是 CKDashboard,记录现在将标题显示为“No Name”,因为 RecordTypeA 的属性没有任何内容。最初,记录名称将是 ref:followed-by-recordid。如果 UA 记录具有对 RecordTypeA 的引用,则它的工作方式与最初一样。那么有没有办法让它只为 RecordTypeB 参考创建记录名称?既然我有第二个属性,是否有可能将其更改为 CKReference 列表?其次,更重要的是,当我检索 UserActivity 记录时,如何判断给定记录是否包含对 RecordTypeA 或 RecordTypeB 的引用?有没有类似于 isKindOfClass 方法的方法?在这种情况下,该方法只是显示它是一个 CKReference,而不是它所引用的记录类型。如果 CKReference List 是合适的解决方案,也许第二个问题会自动解决?提前感谢您的指导!

4

1 回答 1

2

经验表明,记录的标题将是您为该记录类型创建的第一个字段。我还没有找到任何关于此的文档,所以这可能是巧合。如果您希望您的标题是 RecordTypeB 字段,则重新创建您的 recordType,然后首先创建 RecordTypeB。没有其他方法可以影响标题的内容。

您可以将其更改为 CKReference 列表,但我认为在您的情况下,保留 2 个单独的字段会更容易。只有当您不介意什么是什么时,您才应该使用列表。但在你的情况下,引用是两种不同的类型。

如果你没有写其中一个字段,那么当你阅读记录并查看引用时,它应该是 nil。您不能询问 CKReference 的记录类型。但是,如果您为引用创建一个字段,那么您就知道它应该是什么记录类型。否则,您需要创建一个额外的字段来指示它是什么记录类型。

于 2015-04-16T06:27:24.043 回答