2014-10-08 16 views
17

Khi tiêu đề câu hỏi của tôi cho biết làm thế nào tôi có thể chuyển đổi CGPoint thành NSValues để tôi có thể lưu trữ sau đó vào mảng Trong swift.Làm thế nào để chuyển đổi CGPoint trong NSValue nhanh chóng?

Trong Mục tiêu-C chúng ta có thể làm điều đó như thế này:

// CGPoint converted to NSValue 
    CGPoint point = CGPointMake(9, 9); 
    NSValue *pointObj = [NSValue valueWithCGPoint:point]; 

Nhưng ai có thể cho tôi biết rằng làm thế nào tôi có thể làm điều này trong nhanh chóng?

Cảm ơn trước.

Trả lời

37

Hãy thử một cái gì đó như thế:

let point = CGPointMake(9, 9) 
var pointObj = NSValue(CGPoint: point) 
+0

của nó làm việc nhờ. –

+0

idk tại sao không có cửa sổ bật lên cho c-tor – fnc12

10

Đúng như bạn muốn tưởng tượng:

let point = CGPoint(x: 9.0, y: 9.0) 
let pointObj = NSValue(CGPoint: point) 
let newPoint = pointObj.CGPointValue() 
5

Nếu bạn không có kế hoạch về việc sử dụng mảng trong Objective-C, và có thể giữ nó như là một mảng Swift, sau đó bạn không cần phải biến điểm thành NSValue, bạn chỉ có thể thêm điểm vào mảng trực tiếp:

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] 
+0

Nhưng nếu trường hợp đó xảy ra, bạn sẽ sử dụng NSPoint chứ không phải CGPoint. Rõ ràng nó là cho interop, vì vậy câu trả lời của bạn là không thích hợp cho câu hỏi. –

0

swi ft 3

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

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

+2

Ok. Một vài thứ. pointObj là một tên kỳ lạ cho một NSValue. Các .init là không cần thiết. Các tham số bạn đang đi vào là một CGSize không phải là một CGPoint. Điều này làm cho tên thậm chí còn kỳ quặc hơn. – Fogmeister

+2

Sử dụng .init là sai/không khuyến khích trong Swift nói chung. –

+0

thx. '' pointObj'' được coi là câu trả lời được chấp nhận để nhất quán cho việc đọc tốt hơn. Tôi sẽ chỉnh sửa điều đó. – Jan

0

nhanh chóng 4

let point = NSValue.init(cgPoint: mask.position) 
Các vấn đề liên quan