首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从valueForKeyPath返回类型:?

从valueForKeyPath返回类型:?
EN

Stack Overflow用户
提问于 2012-04-20 18:10:52
回答 2查看 1.1K关注 0票数 1

这可能是我的试验错误,但我有点困惑,为什么这不返回一个int (因为这是由键路径标识的属性类型)。Does :返回一个对象,有人能解释吗?

代码语言:javascript
运行
复制
// Simple Object
@interface Hopper : NSObject
@property(nonatomic, assign) int mass;
@end

// Test
Hopper *hopper = [[Hopper alloc] init];
[hopper setMass:67];
NSLog(@"HOPPER: %d", [hopper valueForKeyPath:@"mass"]);

代码语言:javascript
运行
复制
WARNING: Conversion specifies type 'int' but the argument has type 'id'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-20 18:12:28

是的,它返回一个objc对象:

代码语言:javascript
运行
复制
- (id)valueForKeyPath:(NSString *)keyPath;

有关从非objc对象到objc对象(例如NSNumberNSValue)的自动转换的详细信息,请参阅Accessor Search Patterns for Simple Attributes

因此,您将使用objc对象格式说明符%@

代码语言:javascript
运行
复制
NSLog(@"HOPPER: %@", [hopper valueForKeyPath:@"mass"]);
票数 3
EN

Stack Overflow用户

发布于 2012-04-20 18:12:19

valueForKeyPath返回一个对象。int和char类型不是对象。属性访问该属性。运算符或类似的。

代码语言:javascript
运行
复制
NSLog(@"HOPPER: %d", [hopper mass]);

NSLog(@"HOPPER: %d", hopper.mass);

编辑:未完全阅读示例代码,已更新答案

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10244210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档