मैं एक आसान तरीके से NSArray में CGPoint ऑब्जेक्ट कैसे जोड़ सकता हूँ?


129

मेरे पास लगभग 50 CGPoint ऑब्जेक्ट हैं जो "पथ" जैसी किसी चीज़ का वर्णन करते हैं, और मैं उन्हें NSArray में जोड़ना चाहता हूं। यह एक ऐसी विधि होने जा रही है जो किसी दिए गए इंडेक्स के लिए संबंधित CGPoint को वापस कर देगी। मैं p1 = ... जैसे 50 वैरिएबल बनाना नहीं चाहता; P2 = ..., और इसी तरह। क्या कोई आसान तरीका है जो मुझे उन बिंदुओं को "तुरन्त" परिभाषित करने की अनुमति देगा जब वस्तुओं के साथ NSArray को इनिशियलाइज़ किया जाए?

जवाबों:


324

UIKitApple के लिए CGPoint के समर्थन के साथ NSValue, आप कर सकते हैं:

NSArray *points = [NSArray arrayWithObjects:
                     [NSValue valueWithCGPoint:CGPointMake(5.5, 6.6)],
                     [NSValue valueWithCGPoint:CGPointMake(7.7, 8.8)],
                     nil];

कई [NSValue] उदाहरणों की सूची बनाएं जैसे आपके पास CGPoint है, और सूची को शून्य में समाप्त करें। इस संरचना में सभी ऑब्जेक्ट ऑटो-रिलीज़ हैं।

जब आप मानों को सरणी से बाहर निकाल रहे हों, तो दूसरी तरफ:

NSValue *val = [points objectAtIndex:0];
CGPoint p = [val CGPointValue];

3
स्केलर के प्रकारों के लिए, NSNumber पर एक नज़र डालें ... आप संख्याओं को देखेंगे जैसे कि नंबरवूल: नंबरविथइंटर: नंबरविथफ्लोएट :, नंबरविथग्निस्टेडशॉर्ट :, इत्यादि
जेरेट हार्डी

4
वैकल्पिक रूप से आप सीधे NSValue का उपयोग कर सकते हैं: [NSValue valueWithBytes: & someStructSockaddr objCType: @encode (struct sockaddr)] उदाहरण के लिए।
जिम डोवी

7

मैं इसका उपयोग करता हूं:

सरणी बनाएं:

NSArray *myArray = @[[NSValue valueWithCGPoint:CGPointMake(30.0, 150.0)],[NSValue valueWithCGPoint:CGPointMake(41.67, 145.19)]];

पहली CGPoint वस्तु प्राप्त करें:

CGPoint myPoint = [myArray[0] CGPointValue];

3

आप इसे न्यूनतम रूप में भी लिख सकते हैं:

CGPoint myArray[] = { CGPointMake(5.5, 6.6), CGPointMake(7.7, 8.8) };

CGPoint p2 = myArray[1];

2

क्या आपने देख लिया है CFMutableArray? यह आपके लिए बेहतर काम कर सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.