2010-12-07 7 views
14

से NSMutableArray मेरे पास निम्न कोड है और मैं NSArray के बजाय एनएसएमयूटेबल सरणी का उपयोग करना चाहता हूं, क्या आप मुझे बता सकते हैं कि एनएसएमयूटेबल सरणी को कैसे लोड किया जाए, क्योंकि वर्तमान विधि काम नहीं करती है।NSArray

-(void) whatever{ 
NSData *htmlData = [[NSString stringWithContentsOfURL:[NSURL URLWithString: @"http://www.objectgraph.com/contact.html"]] dataUsingEncoding:NSUTF8StringEncoding]; 
TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:htmlData]; 
NSArray *titles = [xpathParser search:@"//h3"]; // get the page title - this is xpath  notation 
TFHppleElement *title = [titles objectAtIndex:0]; 
NSString *myTitles = [title content]; 

NSArray *articles = [xpathParser search:@"//h4"]; // get the page article - this is xpath  notation 
TFHppleElement *article = [articles objectAtIndex:0]; 
NSString *myArtical = [article content]; 

मैं कोशिश की है:

NSMutableArray *titles = [xpathParser search:@"//h3"]; 

लेकिन यह मान लोड करता है?

उत्तर

33

आप NSArray ऑब्जेक्ट पर पर वापस आने के लिए mutableCopy पर आक्रमण कर सकते हैं।

ध्यान दें कि कैली को इस ऑब्जेक्ट का स्वामित्व प्राप्त होगा क्योंकि विधि नाम में "प्रतिलिपि" है।

(Apple's memory management guide कहा गया है कि एक विधि नाम शब्द "alloc" युक्त, "नया" या "कॉपी" सम्मेलन द्वारा एक वस्तु जिसमें आपके पास लौट जाना चाहिए, और के रूप में ऐसे कुछ बिंदु पर के स्वामित्व त्यागना चाहिए।)

+1

मैं आपको वोट दूंगा लेकिन आपने लिखा था "सम्मेलन द्वारा एक वस्तु को संदर्भ संख्या = 1 के साथ वापस करना चाहिए जो तकनीकी रूप से गलत है। वास्तव में यदि आप अपना स्वयं का लिंक पढ़ते हैं तो आप देखेंगे कि यह ऑब्जेक्ट स्वामित्व नीति अनुभाग में "बनाए रखने की गणना" वाक्यांश का भी उपयोग नहीं करता है। – JeremyP

+0

@ जेरेमीपी हम्म, अच्छा बिंदु। फिक्स्ड। –

+1

आप बिंदु चूक गए हैं। ऐप्पल की मेमोरी मैनेजमेंट गाइड का कहना है कि सम्मेलन यह है कि आप * ऑब्जेक्ट * हैं। यह एक कार्यान्वयन विस्तार है कि बनाए रखने की गिनती 1 है (जो हमेशा वैसे भी सच नहीं है)। – JeremyP

5

मान लिया जाये कि [xpathparser ...] रिटर्न एक NSArray, तो आप उपयोग कर सकते हैं:

NSMutableArray *titles = [NSMutableArray arrayWithArray:[xpathParser search:@"//h3"]]; 
+3

'+ [NSMutableArray arrayWithArray:] 'को ऑटोरेलेज्ड होने का लाभ है - यदि आप' - [NSArray mutableCopy]' का उपयोग करते हैं, तो आपको खुद को रिलीज़/ऑटोरेलीज़ करना होगा। –

+0

निक फोर्ज द्वारा अब एआरसी के तहत अप्रासंगिक है? –

+0

@ बेसिलबोरक संख्या, कुछ पुराने लेकिन अभी भी बनाए रखा ऐप्स अभी भी एमआरआर – James

31
सीधे शब्दों में इस तरह

:

NSArray* someArray = [xpathParser search:@"//h3"]; 
NSMutableArray* mutableArray = [someArray mutableCopy]; 

है यह काफी सचमुच, यह।