NSMutableArray от NSArray - PullRequest
       4

NSMutableArray от NSArray

15 голосов
/ 07 декабря 2010

У меня есть следующий код, и я хочу использовать массивы NSMutable вместо NSArray Не могли бы вы сказать мне, как загрузить массив 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"];

но он загружает значения?

Ответы [ 3 ]

33 голосов
/ 07 декабря 2010

Вы можете вызвать mutableCopy для объекта NSArray, чтобы вернуть вам NSMutableArray.

Обратите внимание, что вызываемый объект получит право собственности на этот объект, поскольку имя метода содержит «copy».

( Руководство по управлению памятью Apple гласит, что имя метода, содержащее слова "alloc", "new" или "copy", должно по соглашению возвращать объект, которым вы владеете, и поэтому должно отказаться от владения в какой-то момент.)

31 голосов
/ 07 декабря 2010

Просто так:

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

Это в буквальном смысле, это.

5 голосов
/ 07 декабря 2010

Если [xpathparser ...] возвращает NSArray, вы можете использовать:

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