【发布时间】:2011-04-22 20:59:15
【问题描述】:
我有一个在核心数据存储中设置实体的函数。我曾经将所有值存储为 double 类型,但是现在我必须让它也适应 NSStrings。因此,我将函数接收的参数类型更改为 id 类型。但是,现在我得到了错误:
error: incompatible type for argument 1 of 'numberWithDouble:'
...在以下几行:
//...
[dfm setTimeStamp:[NSNumber numberWithDouble:value]];
//...
[[fetchedObjects objectAtIndex:0] setValue:[NSNumber numberWithDouble:value] forKey:@"timeStamp"];
//...
显然它不喜欢每行的 [NSNumber numberWithDouble:value] 段。我正在考虑制作一个包含 NSNumber 类型的容器类(Apple 不是已经有这样的类吗?)来解决这个问题,但我认为必须有一种我没有想到的更简单的方法(除了复制函数和更改 value 参数的类型)。有任何想法吗?提前致谢!
编辑:
这是函数声明:
-(void)setItemInDFMWhilePreservingEntityUniquenessForItem:(attribute)attr withValue:(id)value
attribute 只是一个枚举,它指定要存储在哪个实体中。问题是编译器给我的值是 id 类型的问题,理论上我可以传入任何我想要的东西,而且我相信我拥有它的方式我暗示我会将它作为 NSNumber 传递,但是编译器不喜欢这样,因为那实际上不是我想的类实例?
【问题讨论】:
标签: objective-c cocoa-touch ios4 dynamic arguments