为Core Data属性设置键入强制转换

Spa*_*nky 2 attributes casting core-data nsnumber nsstring

我正在尝试设置Core Data属性,但是我遇到了不兼容的类型错误.我在iPhone 3.0上的Core Data实体中有一个float属性.Core Data自动为托管数据对象生成一个接口,该对象提供对它的属性访问:

@property (nonatomic, retain) NSNumber * volume;
Run Code Online (Sandbox Code Playgroud)

并为其实施:

@dynamic volume;
Run Code Online (Sandbox Code Playgroud)

我创建了一个托管数据对象的实例,我称之为attrVolume,并使用它来通过Core Data托管对象上下文访问该Core数据实体属性:

[attrVolume setVolume:[txtVolume.text floatValue]];
Run Code Online (Sandbox Code Playgroud)

编译错误是:

'setVolume:'参数1的不兼容类型

任何想法如何转换该值而不是编译错误?有没有办法施放给NSNUmber?

任何帮助赞赏// :)

Rob*_*ger 5

-floatValue返回type的值float.然后,您尝试设置值volume,NSNumberfloat值为a,该值失败.

您需要NSNumber从字符串的浮点值创建一个并将其分配给volume:

NSNumber* volNum = [NSNumber numberWithFloat:[textVolume.text floatValue]];
[attrVolume setVolume:volNum];
Run Code Online (Sandbox Code Playgroud)