覆盖NSManagedObject getter以获取本地化字符串

时间:2014-09-04 14:37:23

标签: ios objective-c core-data key-value-observing

我有一堆NSManagedObject实体,其中有一组需要正确翻译的字段。

我已经阅读了有关核心数据本地化最佳实践的其他帖子,但我真的希望有一种方法可以集中管理从与实体相关的密钥中正确翻译的字符串的解析。

因此,例如,如果我有一个名为Books的实体,其中包含字段localizedDescription,而不是创建与LocalizedBook的关系,而LocalizedBook是为翻译目的而创建的实体,我希望所有实体都与现实世界相关抽象和一个唯一的实体,也可以是字符串文件或NSDictionary。

这种方式我喜欢创建一个NSManagedObject的子类和一个超类的Book,其中有条件的字段的getter可以读取原始值或做一些数学然后返回翻译的值。

所以我在这里问的基本上是:我怎么能 - 通过子类或类别 - 覆盖每个NSManagedObject字段的getter而不为每个字段编写getter或循环字段?是否有一种方法可以覆盖,比如valueForKey :,而不会破坏任何东西?

为了好奇,我对这个特定问题更感兴趣,而不是找到解决翻译问题的更好方法或翻译核心数据值的绝对最佳实践。

2 个答案:

答案 0 :(得分:1)

如果不写它们,你就无法覆盖吸气剂。 -valueForKey:都不应该被覆盖。

UPD:可能会覆盖这些方法,因为NSObject的-primitiveValueForKey:会做出伎俩。

答案 1 :(得分:0)

如果只需要在商店中保留一种语言的所有值,然后在需要在应用中显示它们时使用NSLocalizedString进行翻译呢?