2010-04-02 13 views
7

मैं एक ही कोड में एक और समस्या है ... मैं इस त्रुटि हो रही है:त्रुटि "एक ठोस उदाहरण बनाएं!"

initialization method -initWithCharactersNoCopy:length:freeWhenDone: cannot be sent to an abstract object of class NSString_RegEx: Create a concrete instance!

लेकिन मैं त्रुटि या क्या मुझे क्या करना चाहिए समझ में नहीं आता ...

संपादित करें:

NSString *pageContent = [[NSString alloc] initWithData:pageContents encoding:NSASCIIStringEncoding]; 
NSString_RegEx *pContent = [[NSString_RegEx alloc] initWithString: pageContent]; 
+0

HOW आपने इस उदाहरण को आवंटित किया था? –

+0

अपना कोड दिखाएं। –

उत्तर

11

आप इसे देख रहे हैं क्योंकि एनएसएसटींग एक क्लास क्लस्टर है। सामान्य स्पष्टीकरण के लिए ऐप्पल के दस्तावेज़ here और here विशेष रूप से एनएसएसटींग को उप-वर्गीकरण पर नोट्स के लिए देखें। असल में, एनएसएसटींग एक अमूर्त वर्ग है जिसमें वर्णों को संग्रहित करने की कोई विधि नहीं है, और विभिन्न -initWith ... विधियां प्रारंभिक विधि के आधार पर एनएसएसटींग के विभिन्न ठोस उप-वर्गों को वापस लाती हैं। आम तौर पर, जब आप एनएसएसटींग का उपयोग कर रहे हैं, तो यह पूरी तरह से पारदर्शी है। हालांकि, अगर आप एनएसएसटींग को उप-वर्गीकृत करना चाहते हैं, तो आपको कम से कम मूल विधियों (-थेंथ, और -characterAtIndex :) और किसी भी इनिट विधियों को लागू करना होगा (प्लस, जाहिर है, स्ट्रिंग के वर्णों को संग्रहीत करने का एक तरीका है)।

यदि आप बस एनएसएसटींग में कार्यक्षमता जोड़ना चाहते हैं, तो सबक्लासिंग आमतौर पर आवश्यक नहीं है। सबसे पहले, आपको यह जांचना चाहिए कि कोई श्रेणी, या एनएसएसटींग पर चलने वाला फ़ंक्शन, या एनएसएसटींग वाले वर्ग पर एक विधि बेहतर काम करेगी। उदाहरण के लिए, RegexKit या Google Toolbox For Mac देखें, जिनमें से दोनों एनएसएसटींग पर एक श्रेणी का उपयोग करके नियमित अभिव्यक्ति समर्थन लागू करते हैं।

+0

बहुत बहुत धन्यवाद! मेरी दूसरी समस्या हल हो गई है! (ए) मुझे RegexKit की तरह कुछ नहीं मिला ... – dododedodonl

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