问题
As my question title says how can I convert CGPoint
into NSValues
so I can store then Into array In swift.
In objective-C we can do it like this:
// CGPoint converted to NSValue
CGPoint point = CGPointMake(9, 9);
NSValue *pointObj = [NSValue valueWithCGPoint:point];
But can anybody tell me that how can I do this in swift?
Thanks In Advance.
回答1:
Try something like that:
let point = CGPointMake(9, 9)
var pointObj = NSValue(CGPoint: point)
回答2:
Exactly as you'd imagine:
let point = CGPoint(x: 9.0, y: 9.0)
let pointObj = NSValue(CGPoint: point)
let newPoint = pointObj.CGPointValue()
回答3:
If you aren't planning on using the array in Objective-C, and can keep it as a Swift Array, then you don't need to turn the point into an NSValue, you can just add the point to the array directly:
let point1 = CGPoint(x: 9.0, y: 9.0)
let point2 = CGPoint(x: 10.0, y: 10.0)
let pointArray = [point1, point2] // pointArray is inferred to be of type [CGPoint]
let valuesArray = pointsArray as [NSValue]
回答4:
swift 3
let pointObj = NSValue(cgPoint: CGPoint(x:9, y:9))
https://developer.apple.com/reference/foundation/nsvalue/1624531-init
回答5:
swift 4
let point = NSValue.init(cgPoint: mask.position)
来源:https://stackoverflow.com/questions/26251678/how-to-convert-cgpoint-in-nsvalue-in-swift