【发布时间】:2012-04-11 15:29:52
【问题描述】:
我正在使用 Core Data 编写一个应用程序,该应用程序严重依赖于从字符串值中设置属性。但是,我遇到了一个问题,因为 Core Data 在创建包装器方法时使用 NSNumber 来表示所有数字字段。因此,如果我使用键/值编码 setValue:forKey: 传入一个字符串,它会给我一个类型错误:
例如,我有一个对象类型“建筑”。在数据模型中,我有一个名为“fbFloors”的属性设置为整数 32。
然后,在我的代码中,我执行以下操作:
Building * b = [NSEntityDescription insertNewObjectForEntityForName:@"Building" inManagedObjectContext:ctx]; [b setValue:@"2" forKey:@"fbFloors"];
这会引发以下异常:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'不可接受的属性值类型:property = "fbFloors";所需类型 = NSNumber;给定类型 = __NSCFConstantString;值 = 2。'
我希望它将字符串值强制转换为数字,但它不想这样做。我尝试实现 coerceValueForFbFloors: 但它看起来只在 Mac OS X 中可用,而不是在 iOS 中。
有什么想法吗?
【问题讨论】:
标签: core-data ios5 key-value-coding