आप iOS 6 या ओएस एक्स 10.8 लक्षित नहीं करते हैं, तो मैं कहना है कि यह अभी भी काम करने के लिए subscripting पाने के लिए उल्लेखनीय आसान है करना चाहते हैं। आपको बस इतना करना है कि आवश्यक वर्गों को उस वर्ग के रूप में जोड़ें, जिसे आप सब्सक्राइब करना चाहते हैं, और उन विधियों को उचित रूप से कार्यान्वित करें।
NSArray
: - (id)objectAtIndexedSubscript: (NSUInteger)index;
NSMutableArray
: - (void)setObject: (id)obj atIndexedSubscript: (NSUInteger)index;
NSDictionary
: - (id)objectForKeyedSubscript: (id)key;
NSMutableDictionary
: तो निम्न वर्गों के तरीकों को जोड़ने के - (void)setObject: (id)obj forKeyedSubscript: (id)key;
इस को लागू उचित बुला के रूप में एक सरल है कक्षा के लिए विधि। उदाहरण के लिए, NSArray पर subscripting तुम सिर्फ लागू लागू करने के लिए:
- (id) objectAtIndexedSubscript:(NSUInteger)index{
return [self objectAtIndex:index];
}
केवल नकारात्मक पक्ष यह है मैं देख सकता हूँ कि आप किसी भी वर्ग कि subscripting के प्रयोग पर इरादा रखता है में अपने वर्ग आयात करने के लिए सुनिश्चित करने की आवश्यकता है। बेशक, आप अपने उपसर्ग शीर्षलेख में #import
समेत उस आवश्यकता को प्राप्त कर सकते हैं, आमतौर पर फ़ाइल: <appname>-Prefix.pch
। (जोश कैसवेल को इंगित करने के लिए धन्यवाद)।
एक उलझन में आप अपनी आवश्यकताओं के अनुरूप सबस्क्रिप्टिंग विधियों को बदल सकते हैं।उदाहरण के लिए, एप्पल आप subscripting का उपयोग कर NSMutableArray में जोड़ने के लिए/वस्तुओं को हटाने की अनुमति नहीं है, लेकिन यह आसानी से पर्याप्त पूरा किया जा सकता:
तुम बस जोड़ सकते हैं:
- (void) setObject:(id)obj atIndexedSubscript:(NSUInteger)index{
if (index < self.count){
if (obj)
[self replaceObjectAtIndex:index withObject:obj];
else
[self removeObjectAtIndex:index];
} else {
[self addObject:obj];
}
}
स्रोत
2012-07-25 20:21:00
ऑब्जेक्टिव-सी के बारे में clang.llvm.org पर पेज सचमुच बताते हैं कि आपको नई सुविधाओं का उपयोग करने के लिए ऐप्पल एलएलवीएम 4.0 या क्लैंग v3.1 का उपयोग करना होगा। क्या आपके पास इनमें से कोई एक स्थापित है, और क्या यह आपकी बिल्ड सेटिंग्स में निर्दिष्ट है? –
हां मैं एलएलवीएम 4.0 का उपयोग कर रहा हूं। उल्लेख किया जाना चाहिए कि –
आपको आईओएस 6 या ओएस एक्स 10.8 एसडीके के साथ संकलन करना होगा - अन्यथा फाउंडेशन ऑब्जेक्ट्स में शाब्दिक वाक्यविन्यास के सबस्क्रिप्टिंग बिट के लिए आवश्यक विधियां नहीं हैं। –