问:如何从NSConcreteValue获取CGPoint?

时间:2016-07-26 06:42:48

标签: ios reactive-cocoa

我在项目中使用RAC来观察tableView's contentOffset,但我不知道如何提取x,因为id的类型是NSConcreteValue

[RACObserve(_tableview, contentOffset)
        subscribeNext:^(id  x){

            float currentOffsetY = x.y; // this line is wrong code.

     }];

我引用了相关问题: Get value from KVO - returning NSConreteValue

1 个答案:

答案 0 :(得分:3)

您要找的是NSValue上的pointValue属性。因此,您只需将x参数强制转换为NSValue,因为NSConcreteValueNSValue的子类。然后,您可以从CGPoint结构中提取所需的值。

背景资料

如果要将C结构(例如CGPointCGRect)视为Objective-C对象,例如,将其添加到NSArray,则需要将其包装在一个对象中。因此,Apple在NSValue上提供了特殊的初始化程序和getter。