Ответ 1
Попробуйте что-то вроде этого:
let point = CGPointMake(9, 9)
var pointObj = NSValue(CGPoint: point)
Как мой заголовок вопроса говорит, как я могу преобразовать CGPoint
в NSValues
, поэтому я могу сохранить его в массив In swift.
В objective-C мы можем сделать это следующим образом:
// CGPoint converted to NSValue
CGPoint point = CGPointMake(9, 9);
NSValue *pointObj = [NSValue valueWithCGPoint:point];
Но может ли кто-нибудь сказать мне, что я могу сделать это быстро?
Спасибо заранее.
Попробуйте что-то вроде этого:
let point = CGPointMake(9, 9)
var pointObj = NSValue(CGPoint: point)
Точно так же, как вы думаете:
let point = CGPoint(x: 9.0, y: 9.0)
let pointObj = NSValue(CGPoint: point)
let newPoint = pointObj.CGPointValue()
Если вы не планируете использовать массив в Objective-C и можете сохранить его как массив Swift, тогда вам не нужно превращать точку в NSValue, вы можете просто добавить точку в массив:
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]
swift 3
let pointObj = NSValue(cgPoint: CGPoint(x:9, y:9))
https://developer.apple.com/reference/foundation/nsvalue/1624531-init
Свифт 4
let point = NSValue.init(cgPoint: mask.position)