2016-05-12 70 views
0

我需要對包含波斯語字母表的核心數據對象進行排序。我正在使用NSSSortDescriptor。不幸的是,蘋果不支持波斯語字母,排序不正確,並基於波斯語字母表。我將在此後的應用程序中將波斯語字母表定義爲枚舉,並根據此數據對象進行排序。請幫助如何根據預定義的順序對數據對象進行排序。 NSSortDescriptor * sd = [NSSortDescriptor sortDescriptorWithKey:@「lastname」ascending:YES];};排序CoreData對象使用枚舉

+0

我正在使用基於SQLite的Core Data存儲。蘋果不支持波斯語字母表,並且當我在獲取請求時使用NSSortDescriptor(用於在表格視圖中對我的個人進行排序),但是使用阿拉伯字母進行排序的NSSortDescriptor以及我的排序工作不正確。我想找到一種在數組中定義波斯語字母表的方法,並使用此數組對排序核心數據對象進行排序。 – Qazal

回答

0

如果您使用的是基於SQLite的Core Data存儲,這是不可能的。有了這種持久性存儲,獲取請求將轉換爲SQL並在SQLite中執行。但SQLite不知道任何關於您的應用程序中聲明的枚舉,所以它不能使用它們。只有您的託管對象的持久性屬性可用。如果您使用的是二進制持久性存儲(NSBinaryStoreType),那麼您可能會很幸運 - 但​​還有其他問題,例如Core Data一次加載整個持久存儲。

儘管如此,如果蘋果公司不支持波斯語字母表,那將會是。幾乎所有與文本相關的東西都使用Unicode,因此幾乎每個人類已知的書寫系統都被支持(即使是不再使用的古代系統)。有關詳細信息,請查看Unicode 8.0 Character Code Charts - 應該支持的所有內容。如果您在覈心數據中使用波斯語字母時遇到問題,我建議您提問一個新問題,詳細說明您正在做什麼(包括一些我們這些不熟悉字母表的人的示例文本)以及發生了什麼問題。

+0

必須補充的是,對內存進行排序(而不是在獲取請求)應該與'NSSortDescriptor'一起工作。當然,這包括觸發獲取對象的錯誤。但在許多情況下,這將獨立於排序而發生。 –

+0

@AminNegm-Awad我想使用這種方法,我應該使用NSSortDescriptor * sorter = [[NSSortDescriptor alloc] initWithKey:@「lasname」ascending:YE Sselector:@selector()]?在這種情況下,如何做到這一點呢? – Qazal

+0

它不依賴於排序描述符本身,而是依賴於你想要應用的排序:在一個獲取請求中,你不能應用該表單的排序描述符,因爲你的Objective-C代碼不能在SQL中執行,正如Tom解釋的那樣。如果你在內存中有一個未排序的數組(即在*取數之後),你可以在你的數組*上使用你的方法。但是,我完全同意湯姆的答案的第二段:我認爲波斯字母不被正確支持需要非常多的精力。 –