2011-08-19 181 views
1

當我使用的核心數據我有時我在一個情況下,我有一個 屬性不是隻能有一組特定的可能值的有效值。作爲一個 的例子,假設你做了一個bug跟蹤器,並且你有一個名爲Bug的實體 。然後,您可能希望 狀態的屬性顯示該錯誤所在。假設可能的狀態爲「打開」,「 已關閉」和「正在進行」。指定核心數據屬性

什麼我目前做的是,我已經有這樣的定義爲 字符串屬性。通常我有一個組合框或單選組中的用戶界面 和可能的輸入值已經由什麼組合框或單選按鈕組提供 可能選擇定義。

一個這種方法的問題是,如果 應用本地化成不同的語言這是行不通的。然後根據 當前語言,指示狀態的單詞 以不同的方式存儲。我需要以獨立方式以 的語言保存選擇。

你會怎麼做?

回答

1

正確的方式做到這一點:

在數據模型編輯器,定義一個Integer 16屬性您Bug實體保持三種狀態。在你的Bug類中,這將是一個NSNumber對象。

這個數字的實際顯示的字符串應該由你的程序來處理。爲了保持這個邏輯整齊地被封裝,添加適當的方法到你的Bug.m。例如像這樣:現在

-(NSString *)stateTitle { 
    NSString *title = NSLocalizedString(@"None", nil); 
    if ([self.state intValue]==1) return NSLocalizedString(@"Open", nil); 
    if ([self.state intValue]==2) return NSLocalizedString(@"Closed", nil); 
    if ([self.state intValue]==3) return NSLocalizedString(@"In Progress", nil); 
    return title; 
} 

,在你的UI類,你可以簡單地使用[theBug stateTitle]到例如顯示正確的本地化說明在UILabel