我在写一个使用核心数据的应用程序,它很大程度上依赖于设置字符串值的属性。但是,我遇到了一个问题,因为Core Data在创建包装方法时使用NSNumber来表示所有数字字段。因此,如果我使用键/值编码传递字符串setValue:forKey:它给我一个类型错误:iOS中的键值类型强制
例如,我有一个对象类型“建筑”。在数据模型中,我称之为 “fbFloors” 设置为整数32.
然后一个属性,在我的代码,我做到以下几点:
大厦* B = [NSEntityDescription insertNewObjectForEntityForName:@ “大厦” inManagedObjectContext: CTX]; [b setValue:@“2”forKey:@“fbFloors”];
这就提出了以下情况例外:
终止应用程序由于未捕获的异常“NSInvalidArgumentException”,原因:“不可接受的类型为属性值:属性=‘fbFloors’;期望的类型= NSNumber;给定类型= __NSCFConstantString;值= 2。“
我希望它强制字符串值为一个数字,但它不想。我尝试过实施coerceValueForFbFloors:但它看起来像只适用于Mac OS X,而不是iOS。
任何想法?
我希望避免这个原因是因为我希望能够避免直接编码它。有很多不同类型的字段,但都是通过文本提要进入的,所以我希望KVC能够强制类型,而不必手动编写每个字段发生的情况。我曾想过添加一个名为“fbFloorsString”的字段,它为我做了转换,但我希望能有一种更自动的方式。 – johnnyb 2012-04-11 15:44:22