【发布时间】:2014-05-05 13:36:25
【问题描述】:
我有 NSManagedObject 的属性。假设它是一个属性:
@property (retain, nonatomic) NSString *city;
为了从核心数据中获取数据,我总是使用NSPredicate。谓词如下所示:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K == %@", @"city", @"San Francisco"];
但是这里的问题是项目使用键“城市”作为未定义的键,含义就像一个常量。因此,假设我在我的应用程序中使用键“城市”1000 次,那么如果 NSManagedObject 的属性发生更改,我需要用新的键替换所有这些键,例如到城市名。在这种情况下,我需要使用谓词:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K == %@", @"cityName", @"San Francisco"];
不舒服。所以现在我正在使用全局extern NSString key kCity = @"city";,但如果数据模型也发生了变化,那么就会出现问题,因为如果属性会发生变化,我只会在运行应用程序和控制台时才会崩溃:
'key path city not found in entity <NSSQLEntity...
这里有哪些解决方法?我想使用类似的东西
NSString * const kCity = myEntity.city.propertyString;
所以如果属性被更改,解析器会告诉我项目有错误,我无法运行 app.因此,在我将属性更改为常量之后,我才能运行应用程序
如何获取 NSString 中的属性名称。当然这只是建议,也许有人有其他变体。
谢谢
【问题讨论】:
标签: ios core-data nspredicate