我需要對包含波斯語字母表的核心數據對象進行排序。我正在使用NSSSortDescriptor。不幸的是,蘋果不支持波斯語字母,排序不正確,並基於波斯語字母表。我將在此後的應用程序中將波斯語字母表定義爲枚舉,並根據此數據對象進行排序。請幫助如何根據預定義的順序對數據對象進行排序。 NSSortDescriptor * sd = [NSSortDescriptor sortDescriptorWithKey:@「lastname」ascending:YES];};排序CoreData對象使用枚舉
回答
如果您使用的是基於SQLite的Core Data存儲,這是不可能的。有了這種持久性存儲,獲取請求將轉換爲SQL並在SQLite中執行。但SQLite不知道任何關於您的應用程序中聲明的枚舉,所以它不能使用它們。只有您的託管對象的持久性屬性可用。如果您使用的是二進制持久性存儲(NSBinaryStoreType
),那麼您可能會很幸運 - 但還有其他問題,例如Core Data一次加載整個持久存儲。
儘管如此,如果蘋果公司不支持波斯語字母表,那將會是很。幾乎所有與文本相關的東西都使用Unicode,因此幾乎每個人類已知的書寫系統都被支持(即使是不再使用的古代系統)。有關詳細信息,請查看Unicode 8.0 Character Code Charts - 應該支持的所有內容。如果您在覈心數據中使用波斯語字母時遇到問題,我建議您提問一個新問題,詳細說明您正在做什麼(包括一些我們這些不熟悉字母表的人的示例文本)以及發生了什麼問題。
必須補充的是,對內存進行排序(而不是在獲取請求)應該與'NSSortDescriptor'一起工作。當然,這包括觸發獲取對象的錯誤。但在許多情況下,這將獨立於排序而發生。 –
@AminNegm-Awad我想使用這種方法,我應該使用NSSortDescriptor * sorter = [[NSSortDescriptor alloc] initWithKey:@「lasname」ascending:YE Sselector:@selector()]?在這種情況下,如何做到這一點呢? – Qazal
它不依賴於排序描述符本身,而是依賴於你想要應用的排序:在一個獲取請求中,你不能應用該表單的排序描述符,因爲你的Objective-C代碼不能在SQL中執行,正如Tom解釋的那樣。如果你在內存中有一個未排序的數組(即在*取數之後),你可以在你的數組*上使用你的方法。但是,我完全同意湯姆的答案的第二段:我認爲波斯字母不被正確支持需要非常多的精力。 –
- 1. 枚舉使用空對象
- 2. 排序可枚舉
- 3. 如何通過枚舉值對對象進行排序?
- 4. Javascript對象枚舉
- 5. 使用枚舉參數化對象
- 6. 使用枚舉的對象c#
- 7. 使用JSON.NET爲jQGrid枚舉JSON對象
- 8. 使用枚舉作爲對象ID
- 9. JPQL通過枚舉排序
- 10. C#:排序/ OrderBy枚舉值
- 11. 如何使用Ransack對枚舉進行排序?
- 12. 如何根據使用Java的枚舉以升序排列對象列表?
- 13. 枚舉javascript中的對象
- 14. 屬於枚舉對象
- 15. 從對象訪問枚舉
- 16. 枚舉類對象轉換
- 17. 像枚舉,但對象
- 18. C#枚舉對象foreach
- 19. 爲用戶界面排序枚舉
- 20. 無法用MongoDBRef枚舉對象
- 21. C#枚舉排除
- 22. 混淆枚舉...如何更改枚舉過程中的對象?
- 23. 枚舉struct?行爲像一個枚舉的Value對象
- 24. 保持與枚舉類的枚舉到對象映射?
- 25. 使用2個CoreData對象
- 26. 使用枚舉
- 27. GridView - 按字母順序對枚舉進行排序
- 28. 使用列枚舉的LINQ表枚舉
- 29. 如何自定義枚舉的排序?
- 30. 比較排序的枚舉值
我正在使用基於SQLite的Core Data存儲。蘋果不支持波斯語字母表,並且當我在獲取請求時使用NSSortDescriptor(用於在表格視圖中對我的個人進行排序),但是使用阿拉伯字母進行排序的NSSortDescriptor以及我的排序工作不正確。我想找到一種在數組中定義波斯語字母表的方法,並使用此數組對排序核心數據對象進行排序。 – Qazal