NSMutableArray от NSArray
У меня есть следующий код, и я хочу использовать 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"];
но он загружает значения?
Ответы
Ответ 1
Вы можете вызвать mutableCopy
объекта NSArray
, чтобы вернуть вам NSMutableArray
.
Обратите внимание, что вызываемый пользователь получит право собственности на этот объект, поскольку имя метода содержит "копию".
(Руководство по управлению памятью Apple утверждает, что имя метода, содержащее слова "alloc", "new" или "copy", должно по возврату соглашения объект, который у вас есть, и как таковой должен отказаться от владения в какой-то момент.)
Ответ 2
Просто так:
NSArray* someArray = [xpathParser search:@"//h3"];
NSMutableArray* mutableArray = [someArray mutableCopy];
Это буквально, это.
Ответ 3
Предполагая, что [xpathparser ...]
возвращает NSArray
, вы можете использовать:
NSMutableArray *titles = [NSMutableArray arrayWithArray:[xpathParser search:@"//h3"]];