20

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.

Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
Dharmesh Kheni
  • 71,228
  • 33
  • 160
  • 165

5 Answers5

38

Try something like that:

let point = CGPointMake(9, 9)
var pointObj = NSValue(CGPoint: point)
derdida
  • 14,784
  • 16
  • 90
  • 139
12

Exactly as you'd imagine:

let point = CGPoint(x: 9.0, y: 9.0)
let pointObj = NSValue(CGPoint: point)
let newPoint = pointObj.CGPointValue()
Stephen Darlington
  • 51,577
  • 12
  • 107
  • 152
7

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]
kelin
  • 11,323
  • 6
  • 67
  • 104
Abizern
  • 146,289
  • 39
  • 203
  • 257
  • But if that was the case, you would be using NSPoint, not CGPoint. It's obvious it's for interop, so your answer is irrelevant for the question. – Claus Jørgensen Aug 14 '16 at 23:22
1

swift 3

let pointObj =  NSValue(cgPoint: CGPoint(x:9, y:9))

https://developer.apple.com/reference/foundation/nsvalue/1624531-init

Jan
  • 12,992
  • 9
  • 53
  • 89
1

swift 4

let point = NSValue.init(cgPoint: mask.position)
Aayushi
  • 787
  • 10
  • 14