領域的documentation on optional properties狀態:爲什麼Realm使用RealmOptional <Int>而不是Int?爲可選屬性?
String
,NSDate
和NSData
屬性可以被聲明爲可選的或非可選使用標準斯威夫特語法。可選的數字類型使用RealmOptional
來聲明。
爲什麼數字類型使用非標準RealmOptional
而不是Swift的內置可選語法?
領域的documentation on optional properties狀態:爲什麼Realm使用RealmOptional <Int>而不是Int?爲可選屬性?
String
,NSDate
和NSData
屬性可以被聲明爲可選的或非可選使用標準斯威夫特語法。可選的數字類型使用RealmOptional
來聲明。
爲什麼數字類型使用非標準RealmOptional
而不是Swift的內置可選語法?
領域模型類自動實現訪問底層數據庫數據的持久性屬性的getter和setter。爲了提供這些getter和setter,必須使用dynamic
修飾符聲明您的屬性。這個修飾符讓Swift通過getters和setter動態地分配對屬性的訪問,而不是在編譯時直接訪問成員。 dynamic
修飾符帶有一個重要限制:它僅支持可在Objective-C中表示的類型。這是因爲Swift的動態調度是建立在Objective-C運行時的基礎之上的。正是這個限制可以防止Realm直接支持Int?
。
您可能想知道如何支持String?
,NSData?
和NSDate?
考慮到此限制。答案是它們在Objective-C中有自然等價物,即nullable NSString *
,nullable NSData *
和nullable NSDate *
。 Swift的數字類型不存在這樣的等價物。