2014-10-08 14 views
17

जैसा कि मेरा प्रश्न शीर्षक कहता है कि मैं CGPoint को NSValues में कैसे परिवर्तित कर सकता हूं, इसलिए मैं स्विफ्ट में सरणी में स्टोर कर सकता हूं।एनजीवेल्यू में CGPoint को स्विफ्ट में कैसे परिवर्तित करें?

उद्देश्य सी में हम इस तरह यह कर सकते हैं:

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

लेकिन किसी को भी मुझे बता सकते हैं कि मैं कैसे तेजी से कर सकते हैं?

अग्रिम में धन्यवाद। ऐसे ही

उत्तर

37

कोशिश कुछ:

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

इसके काम करने के लिए धन्यवाद। –

+0

idk इस सी-टोर – fnc12

10

ठीक वैसे जैसे आपने कल्पना की होगी:

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

के लिए कोई पॉपअप क्यों नहीं है, लेकिन यदि ऐसा होता है, तो आप एनएसपीओइंट का उपयोग करेंगे, न कि CGPoint। यह स्पष्ट है कि यह इंटरऑप के लिए है, इसलिए आपका उत्तर प्रश्न के लिए अप्रासंगिक है। –

0

SWI: एक स्विफ्ट सरणी है, तो आप एक NSValue में बिंदु चालू करने के लिए, आप बस सीधे सरणी इंगित जोड़ सकते हैं की जरूरत नहीं है फुट 3

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

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

+2

ठीक है। कुछ बातें। pointObj NSValue के लिए एक अजीब नाम है। .init की आवश्यकता नहीं है। जिस पैरामीटर में आप जा रहे हैं वह एक CGSize है जो CGGoint नहीं है। यह नाम और भी अजीब बनाता है। – Fogmeister

+2

.init का उपयोग सामान्य रूप से स्विफ्ट में गलत/निराश होता है। –

+0

thx। 'प्वाइंट ओबीजे' को बेहतर पढ़ने के लिए सुसंगत उत्तर के लिए स्वीकार्य उत्तर माना जाता था। मैं इसे संपादित करने जा रहा हूँ। – Jan

संबंधित मुद्दे