2015-04-14 52 views
0

在我的應用程序中,我有一個記錄類型(UserActivity),它只存儲用戶想要保存到其配置文件的圖像。此記錄類型只包含一個屬性 - 一個到另一個記錄類型(例如RecordTypeA)的CKReference。它的工作原理非常完美...我可以通過引用來存儲和檢索數據,以構建圖像並在屏幕上適當地顯示它。然而,我只是意識到我需要添加第二個屬性到UserActivity記錄類型,這將是一個CKReference不同的記錄類型(稱之爲RecordTypeB)。記錄類型B是需要分開識別的第二種圖像。因此,UserActivity中的每一行現在都有兩個可能的CKReference中的一個,但不是兩者都有。CloudKit - 在CKRecord中存儲多個CKReferences

我可以保存新的RecordTypeB引用沒有問題,但我有一些問題,因此。首先,當我保存它時,無論是通過代碼還是CKDashboard,記錄現在都將標題顯示爲「No Name」,因爲RecordTypeA的屬性沒有任何內容。最初,記錄名稱是ref:follow-by-recordid。它的工作原理與UA記錄對RecordTypeA的引用相同。那麼有沒有辦法讓它只爲RecordTypeB引用創建記錄名?現在我有第二個屬性了,是否可以將其更改爲CKReference列表?其次,更重要的是,當我檢索UserActivity記錄時,如何判斷給定記錄是否包含對RecordTypeA或RecordTypeB的引用?有沒有類似於isKindOfClass方法的方法?在這種情況下,該方法只顯示它是一個CKReference,而不是它引用的記錄類型。如果CKReference List是適當的解決方案,也許第二個問題會自動解決?在此先感謝您的指導!

+0

這個問題爲什麼被拒絕? – SonnyB

+0

爲什麼?良好的物質,密集的介紹。爲了使其更具可掃描性,您可以:(1)無情地刪除不必要的單詞(「有用」≠「必要」);(2)通過視覺上構建問題以通過項目符號或編號列表格式來反映邏輯結構;(3)採用隱喻或具體的例子而不是抽象泛型(RecordTypeA或B)。相反,使用反映對象本質的名稱(對於具體示例,「UserActivityRecordType」和「SelfyImageReference」與「AvatarImageReference」)。注意:我沒有投票。 – AmitaiB

回答

2

經驗顯示記錄的標題將成爲您爲該recordType創建的第一個字段。我還沒有找到任何有關這方面的文件,所以這可能是一個巧合。如果你想讓你的標題成爲RecordTypeB字段,那麼重新創建你的recordType,然後首先創建RecordTypeB。沒有其他方式來影響標題。

您可以將其更改爲CKReference列表,但我認爲在您的情況下更容易保持2個單獨的字段。只有當你不介意什麼項目是什麼,那麼你應該使用一個列表。但在你的情況下,引用是2種不同的類型。

如果您沒有寫入其中的一個字段,那麼當您讀取記錄並查看引用時,則應該爲零。你不能要求CKReference的recordType。但是如果你創建一個引用的字段,那麼你知道它應該是什麼recordType。否則,您需要創建一個額外的字段來指示它是什麼recordType。

+0

謝謝埃德溫。這是我開始做的工作......檢查每個引用的recordID是否爲零。如果recordTypeA的recordID爲零,那麼我知道它是recordTypeB記錄,反之亦然。但是這仍然有點問題,所以我將UA記錄類型分成2個不同的記錄......一個存儲對recordTypeA的引用,另一個存儲對recordTypeB的引用。我希望我的原始方法具有存儲兩種引用類型的單個記錄類型,但只包含單個引用時會更容易。 – SonnyB