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

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

最佳答案

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

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

如果您没有写任何字段,那么当您阅读记录并查看引用时,它应该为零。您不能要求CKReference的recordType。但是,如果您创建一个供参考的字段,那么您知道它应该是什么recordType。否则,您需要创建一个额外的字段来指示它是什么recordType。

08-05 23:21