AnyObject 到 CGPoint
AnyObject To CGPoint
我似乎无法弄清楚,我有一个 Objective-C 函数 returns 一个 NSArray,我确信 NSArray 中的数据包含 CGPoint 对象 我到底该如何投射这是一个数组
这是函数
+(NSArray *)translatePoints:(NSArray *)points fromView:(UIView *)fromView toView:(UIView *)toView
{
NSMutableArray *translatedPoints = [NSMutableArray new];
// The points are provided in a dictionary with keys X and Y
for (NSDictionary *point in points) {
// Let's turn them into CGPoints
CGPoint pointValue = CGPointMake([point[@"X"] floatValue], [point[@"Y"] floatValue]);
// Now translate from one view to the other
CGPoint translatedPoint = [fromView convertPoint:pointValue toView:toView];
// Box them up and add to the array
[translatedPoints addObject:[NSValue valueWithCGPoint:translatedPoint]];
}
return [translatedPoints copy];
}
您的 translatesPoints
方法 returns 一个 NSArray
包含 NSValue
包裹 CGPoint
的方法。让我们创建这样一个数组:
let arr:NSArray = [NSValue(CGPoint: CGPointMake(1,2)), NSValue(CGPoint: CGPointMake(3,4))]
您可以从此数组中获取值并对它们调用 CGPointValue()
:
for val in arr as [NSValue] {
let point = val.CGPointValue()
println("CGPoint = (\(point.x), \(point.y))")
}
如果需要,您可以将整个 NSArray
转换为 Swift 个 CGPoint
数组,如下所示:
let points = (arr as [NSValue]).map({[=12=].CGPointValue()})
现在 points
的类型为 [CGPoint]
。
我似乎无法弄清楚,我有一个 Objective-C 函数 returns 一个 NSArray,我确信 NSArray 中的数据包含 CGPoint 对象 我到底该如何投射这是一个数组
这是函数
+(NSArray *)translatePoints:(NSArray *)points fromView:(UIView *)fromView toView:(UIView *)toView
{
NSMutableArray *translatedPoints = [NSMutableArray new];
// The points are provided in a dictionary with keys X and Y
for (NSDictionary *point in points) {
// Let's turn them into CGPoints
CGPoint pointValue = CGPointMake([point[@"X"] floatValue], [point[@"Y"] floatValue]);
// Now translate from one view to the other
CGPoint translatedPoint = [fromView convertPoint:pointValue toView:toView];
// Box them up and add to the array
[translatedPoints addObject:[NSValue valueWithCGPoint:translatedPoint]];
}
return [translatedPoints copy];
}
您的 translatesPoints
方法 returns 一个 NSArray
包含 NSValue
包裹 CGPoint
的方法。让我们创建这样一个数组:
let arr:NSArray = [NSValue(CGPoint: CGPointMake(1,2)), NSValue(CGPoint: CGPointMake(3,4))]
您可以从此数组中获取值并对它们调用 CGPointValue()
:
for val in arr as [NSValue] {
let point = val.CGPointValue()
println("CGPoint = (\(point.x), \(point.y))")
}
如果需要,您可以将整个 NSArray
转换为 Swift 个 CGPoint
数组,如下所示:
let points = (arr as [NSValue]).map({[=12=].CGPointValue()})
现在 points
的类型为 [CGPoint]
。