2012-08-31 33 views
0

我想請教一下,我面臨着一個問題: 我有兩個班,照片RemotePhoto,表示照片時使用手機的攝像頭和下載的照片shooted。 RemotePhoto繼承自圖片,因爲它需要重新定義相同的邏輯。Objective-C類繼承

我將兩種照片類型信息都保存在數據庫中,名爲圖片,因爲它們共享相同的細節,並使用列作爲標記來區分它們。 我使用DAO從數據庫獲取照片信息。

的問題是:

如何管理一個事實,即如果行是指當地的照片應該被映射到照片類和以其他方式使用RemotePhoto?我認爲在DAO實現中做這樣的區分,但我想知道是否有一些缺點。 我也想知道,如果它的不可能性,以利用一些的ObjectiveC功能在一個優雅的方式(這樣,也許,我可以學到新的東西;)來完成這個粘性。

最後我也有興趣在一些不同的DB組織建議,如果有人遇到類似的問題:到現在爲止我沒有保存在數據庫遠程照片信息,所以我的時間,使DB模式更新:)!

+1

你應該看看類集羣如何在Objective-C中工作:https://developer.apple.com/library/ios/#documentation/General/Conceptual/CocoaEncyclopedia/ClassClusters/ClassClusters.html – Macmade

回答

0

你有沒有考慮使用協議而不是繼承。如果您RemotePhoto類必須重新實現在你的照片類舉行的登錄信息,然後繼承可能不是最好的解決辦法:)

讓兩個類:LocalPhotoRemotePhoto兩者都是的NSObject子類並實現Photo協議。有一個方法(或者,如果你感覺看中PhotoFactory),將您的DAO和返回id <Photo>。您的應用程序的其餘部分不應該需要關心,如果它是一個本地或遠程的照片。

+0

好主意!我會試試看。謝謝 ;)! – notsoux

1

,如果你的類NSObjects,你可以使用isKindOfClass(RemotePhoto)說,如果對象是RemotePhoto或不