2016-05-12 71 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解释的那样。如果你在内存中有一个未排序的数组(即在*取数之后),你可以在你的数组*上使用你的方法。但是,我完全同意汤姆的答案的第二段:我认为波斯字母不被正确支持需要非常多的精力。 –