NSPredicate具有密钥的本地化值

时间:2015-03-30 13:06:08

标签: ios objective-c nspredicate nssortdescriptor nslocalizedstring

我有一个带有属性" title"的核心数据实体,它是本地化表的字符串。 我需要能够创建一个谓词和一个排序描述符,允许我通过Localized(title)而不是title来进行比较。 有可能吗?


编辑: 假设我有一个名为" Person"的实体。这个实体有一个属性" stringForALocalizedTable",因此对于一种语言NSLocalizedString(person.stringForALocalizedTable)将导致" Alex",对于另一种语言,它将导致" ;亚历山大&#34 ;. 我想创建一个像

这样的谓词
[NSPredicate predicateWithFormat: @"NSLocalizedString(stringForALocalizedTable) == %@", @"Alex"]

我想可以使用predicateWithBlock:方法,但我无法将其与核心数据一起使用。

1 个答案:

答案 0 :(得分:2)

您始终可以使用%K作为密钥的格式化程序参数,如下所示:

NSString *localizedKey = NSLocalizedString(@"title", nil); // localize it.
//Use this localized key as key for search
NSPredicate *p = [NSPredicate predicateWithFormat:@"%K contains[cd] %@",localizedKey , searchString];

PS:我想知道为什么要本地化表格属性。

编辑:如果您想查找本地化值,则需要对该值进行本地化。

NSString *localizedSearch = NSLocalizedString(@"title", nil); // localize it.
//Use this localized search string to look for provided value
NSPredicate *p = [NSPredicate predicateWithFormat:@"title contains[cd] %@",localizedSearch];