gpt4 book ai didi

iOS 核心数据谓词 : How to predicate the primitive value?

转载 作者:行者123 更新时间:2023-11-28 21:49:06 25 4
gpt4 key购买 nike

我遇到了一个棘手的问题。在 coredata 中,我有一个名为“Category”的实体,我想要一个默认类别,用户不能删除、编辑等。这个默认类别称为“0_default_category”(存储在常量 kSettingsLocalizedDefaultCategory 中),这个名称被本地化的显示给用户时的字符串。为此,我已经覆盖了 getter:

-(NSString *)name
{
if([[self primitiveValueForKey:@"name"] isEqualToString:kSettingsLocalizedDefaultCategory]){
return NSLocalizedString(kSettingsLocalizedDefaultCategory, nil);
} else {
return [self primitiveValueForKey:@"name"];
}
}

现在我当然想在常量上使用谓词而不是本地化字符串!但这使用了本地化字符串上的谓词(所以我的 getter 被调用了,这是我不想要的......)

request.predicate = [NSPredicate predicateWithFormat:@"name != %@", kSettingsLocalizedDefaultCategory];

知道如何断言原始值吗?

最佳答案

我认为您将两个不同的问题混为一谈。一是你有一些特殊的逻辑(你的常量)来自动显示本地化的字符串。另一种是返回存储在属性name中的值。

理想情况下,应将它们分开以使这两个问题明确。因此,您不应该重写 name 的 getter,而只是创建一个具有不同名称的自定义方法(或派生属性,根据您的需要)。

-(NSString*)displayName {
return [self.name isEqualToString:kConstant] ?
NSLocalizedString(kConstant) : self.name;
}

如果您想使用自定义逻辑显示您的名字,请使用displayName,并保持谓词为

[NSPredicate predicateWithFormat:@"name != %@", kConstant];

关于iOS 核心数据谓词 : How to predicate the primitive value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28984582/

25 4 0