2010-10-22 19 views
52

यह है कि मैं क्या करना चाहता हूं:मैं एनएसएमयूटेबलएरे या अन्य कंटेनर में एनएसआरेंज कैसे स्टोर करूं?

NSRange r = NSMakeRange(0,5); 
id a = [NSMutableArray a]; 
[a addObject: r]; // but NSRange is not a NSObject * 

एक बुलियन के साथ, मैं इस तरह के कोड का उपयोग करता हूं:

[a addObject: [NSNumber numberWithBool: YES]]; 

या एक पूर्णांक के साथ:

[a addObject: [NSNumber numberWithInteger: 3]]; 

तो समकक्ष क्या है NSRange के साथ? मैं वास्तव में ऐसा नहीं करना चाहता हूं कि इसे पूरा करने के लिए NSObject का अपना उप-वर्ग बनाएं। निश्चित रूप से ऐप्पल पहले से प्रदान किए जाने के साथ एक तरीका है?

उत्तर

130

Use NSValue's +valueWithRange:। सीमा संरचना को वापस पाने के लिए, property rangeValue का उपयोग करें।

[a addObject:[NSValue valueWithRange:r]]; 
... 

NSRange r = a[4].rangeValue; 
+2

क्यों NSValue NSRange स्टोर कर सकता है लेकिन एनएसएआरएआरई नहीं कर सका? – antonio081014

+3

क्योंकि 'NSArray' केवल वस्तुओं को स्टोर कर सकता है। 'एनएसआरेंज 'एक वस्तु नहीं है, लेकिन आप इसे' एनएसवीएलयू 'के साथ लपेट सकते हैं, इसलिए इसका उपयोग एनएसएमआरएआरई, एनएससीई' आदि द्वारा किया जा सकता है। –

+0

एनएसएमयूटेबल सरणी के माध्यम से फिर से चलते समय, एनएसआरेंज आर = ए [i] .ेंज वैल्यू त्रुटि दे रहा है प्रॉपर्टी रेंज वैल्यू टाइप आईडी आईडी पर नहीं मिली है ... –

11
[NSValue valueWithRange:r]; 

और इसे वापस के साथ बाहर निकलना:

NSRange r = [rangeObject rangeValue]; 
+0

रेंजोबजेक्ट क्या है? –

5

आप एक संपत्ति सूची में NSRange स्टोर करने के लिए की जरूरत है, तो आप भी एक NSRange एक NSString में NSStringFromRange फ़ंक्शन का उपयोग कर सकते हैं। और फिर, आप उस स्ट्रिंग को NSRangeFromString फ़ंक्शन का उपयोग करके एक श्रेणी में वापस कर सकते हैं।

+1

उपरोक्त क्योंकि यह चालाक और उपयोगी है, लेकिन NSValue कम कोहनी लगता है। धन्यवाद। :) –

+0

धन्यवाद! मैंने अभी अन्य उत्तरों (धन्यवाद @ मिपाडी और @ केनीटीएम) से 'NSValue' के बारे में सीखा है, और यह मेरे सुझाव से निश्चित रूप से कम कोहनी है। अपने तरह के अपवित्र के अधिक योग्य होने के लिए, मैंने यह उल्लेख करने के लिए अपना जवाब अपडेट किया कि स्ट्रिंग संस्करण संपत्ति सूचियों में श्रेणियों को संग्रहीत करने के साथ उपयोगी हो सकता है। –

4

एक अन्य विकल्प उन श्रेणियों को NSIndexSet में जोड़ने के लिए हो सकता है, इस पर निर्भर करता है कि आप उन्हें आगे कैसे उपयोग करना चाहते हैं।