web-dev-qa-db-ja.com

NSArrayのNSMutableArray

次のコードがあり、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"];

しかし、それは値をロードしますか?

16
Tom Kelly

mutableCopyオブジェクトでNSArrayを呼び出して、NSMutableArrayを返すことができます。

メソッド名には「copy」が含まれているため、呼び出し先はこのオブジェクトの所有権を取得することに注意してください。

Appleのメモリ管理ガイド 「alloc」、「new」、または「copy」という単語を含むメソッド名は、慣例により、所有するオブジェクトを返す必要があり、そのため、一部の所有権を放棄する必要があると述べていますポイント。)

33
Jacob Relkin

単にこのように:

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

それは文字通りです。

31
jer

[xpathparser ...]NSArrayを返します。次を使用できます。

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