0
假設我有這個基類:實體和Equatable的模式是什麼?
class Entity: Equatable {
init() {
}
var localId: Int32?
var id: Int32?
}
func == (lhs: Entity, rhs: Entity) -> Bool {
return object_getClassName(lhs) == object_getClassName(rhs) &&
lhs.localId != nil &&
rhs.localId != nil &&
lhs.localId == rhs.localId
}
,並沿此線的一些實體實現的:
class Message: Entity {
init(senderId: Int32, body: String, sentDateTime: NSDate) {
self.senderId = senderId
self.body = body
self.sentDateTime = sentDateTime
super.init()
}
var senderId: Int32
var body: String
var sentDateTime: NSDate
}
我是否考慮與Equatable
執行正確的方法?我比較類名的原因是localId
的唯一性是針對每個實體類型的作用域。我應該爲每個實體類實施Equatable
嗎? Swift中這種類型的東西是否存在已建立的模式?
的想法是,'當實體插入到本地數據庫localId'填充和當實體與遠程數據庫同步或從遠程數據庫下載時,會填充「id」。有些情況下,他們中的任何一個或兩個都可能是「無」。我不知道'dynamicType',看起來奇怪的是== ==不起作用。看起來很奇怪,沒有一種簡單的方法來檢查兩個對象是否具有相同類型而不擴展'NSObject'。 – 2014-09-22 04:16:31