次のコードがあり、NSArrayの代わりにNSMutable配列を使用したいのですが、現在の方法が機能しないため、NSMutable配列をロードする方法を教えてください。
-(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"];
しかし、それは値をロードしますか?
mutableCopy
オブジェクトでNSArray
を呼び出して、NSMutableArray
を返すことができます。
メソッド名には「copy」が含まれているため、呼び出し先はこのオブジェクトの所有権を取得することに注意してください。
( Appleのメモリ管理ガイド 「alloc」、「new」、または「copy」という単語を含むメソッド名は、慣例により、所有するオブジェクトを返す必要があり、そのため、一部の所有権を放棄する必要があると述べていますポイント。)
単にこのように:
NSArray* someArray = [xpathParser search:@"//h3"];
NSMutableArray* mutableArray = [someArray mutableCopy];
それは文字通りです。
[xpathparser ...]
はNSArray
を返します。次を使用できます。
NSMutableArray *titles = [NSMutableArray arrayWithArray:[xpathParser search:@"//h3"]];