2014-10-08 28 views
17

Soru başlığımın anlamı CGPoint'u NSValues'a dönüştürebilirim, böylece swift dizisine depolayabilirim.Hızlı bir şekilde NSValue CGPoint dönüştürmek nasıl?

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

Ama Swift de bunu nasıl Biri bana söylemeniz edebilirsiniz: nesnel-C

böyle yapabiliriz?

Teşekkürler. Böyle

cevap

37

deneyin şey: hayal ediyorum gibi tam

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

Onun çalışma teşekkürler. –

+0

idk neden bu c-tor için bir açılır pencere yok – fnc12

10

:

Eğer Objective-C diziyi kullanarak planlama değildir ve olarak tutmak durumunda
let point = CGPoint(x: 9.0, y: 9.0) 
let pointObj = NSValue(CGPoint: point) 
let newPoint = pointObj.CGPointValue() 
5

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

Ama durum buysa, CGPoint değil, NSPoint kullanıyor olmalısınız. Bu interop için açık, bu yüzden cevabınız soru için alakasız. –

0

swi: bir Swift Dizi, o zaman sadece doğrudan diziye noktayı ekleyebilir, bir NSValue içine noktasını açmak gerekmez ft 3

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

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

+2

Tamam. Bir kaç şey. pointObj, bir NSValue için garip bir isimdir. .init gerekli değildir. Geçirdiğiniz parametre CGSize değil CGPoint'dir. Bu ismi daha da garip yapar. – Fogmeister

+2

.init kullanımı Swift'de genelde yanlış/önerilmez. –

+0

thx. “pointObj”, daha iyi okuma için tutarlı olması için kabul edilen cevabı kabul etmiştir. Bunu ben düzenleyeceğim. – Jan

0

hızlı 4

let point = NSValue.init(cgPoint: mask.position) 
İlgili konular