我正在使用 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 中。
有任何想法吗?