我設計命名爲ContactInfoEntity有一個NSString財產,contactInfoEntityType的對象,容器對象,屬性,存儲基於性能的任意數量的上它的contactInfoEntityType。在運行時用戶定義數量的附加屬性的對象的NSMutableDictionary?
目標是讓用戶能夠在運行期間定義新的ContactInfoEntityType。
現在,我在ContactInfoEntityType中使用了一個NSMutableDictionary,它有一個鍵:@「typeName」的值:@「Generic」。
要定義一個新的ContactInfoEntityType,我更改鍵的值:@「typeName」並添加新鍵:@「newPropertyName1」,@「newPropertyName2」,...以NSDicts作爲值。嵌套字典的鍵是這樣的:@「defaultValue」,@「index」,@「formatToken」,...
當[ContactInfoEntityFactory contactInfoEntityOfType:emailInfoEntityType];
發送時,工廠獲取NSMutableDictionary的@「emailInfoEntityType」作爲值因爲它是@「typeName」鍵,並且看到有三個額外的字典條目:@「domain」,@「localPart」和@「emailNickname」。
它然後創建一個@其ContactInfoEntity contactInfoEntityType是「emailInfoEntityType」和性能容器有三個條目與相關defaultValues。
現在我的屬性容器是一個NSArray和一個NSMutableArray。 NSArray包含newPropertyNames,NSMutableArray包含值 - 兩者都在同一個索引處。 NSArray確實複製了實體類型定義中的一些信息,但我覺得它保持了單個實體中的數據有意義,以防定義消失。
這是一個合理的方法來解決這個問題嗎?這是迄今爲止我嘗試過的最抽象的對象,仍然沒有將我的頭包裹在所有常見的設計模式中。
具體來說,有沒有比NSMutableDictionary更適合類的定義和NSArray/MutableArray的屬性對象?
我提出問題的方式的任何輸入也表示讚賞。
這聽起來像是CoreData的工作。 – dreamlax
@dreamlax - 我開始使用CoreData,但沒有看到定義新屬性的方法,直到運行時才能知道其屬性數 - 儘管我的xcdatamodel設計經驗僅限於Xcode的圖形界面。 – jslanger