2015-10-20 1 views
1

У меня есть PLIST с двумя массивами, выглядит следующим образом:Xcode - Запись и удаление в Plist

enter image description here

я в настоящее время загрузки PLIST так:

// Find path of plist 
NSString *path = [[NSBundle mainBundle] pathForResource:@"nameofPList" ofType:@"plist"]; 


// Read the data into arrays 
NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; 
NSMutableArray *tableData = [dict objectForKey:@"array2"]; 
  1. Как Я пишу новые элементы в массив «array2» в plist (код, а не вручную)
  2. Как удалить элементы из «array2»? (код, а не вручную)

Спасибо.

ответ

1

Вы, вероятно, хотите:

NSMutableArray *tableData = [dict[@"array2"] mutableCopy]; 
              ^^^^^^^^^^^ 

(в противном случае вы получите неизменный массив).

Добавление элементов с:

[tableData addObject:@"new item"]; 

Удалить с:

[tableData removeObjectAtIndex:someIndex]; 

или:

[tableData removeObject:someObject]; 

и что-нибудь еще вы можете найти в NSMutableArray Class Reference.

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

Вы не можете писать в комплект приложений во время выполнения; напишите в папку и напишите папку и будьте гибкими относительно того, где читать.

+0

Могу ли я знать, будет ли это изменение отражено и в plist. Я пытался сделать то же самое, что и любое изменение в массиве через код не отражается и на plist ... – luckyShubhra

+0

Да, это произойдет, когда вы выполните [tableData writeToFile: atomically:] '. – trojanfoe

+0

Спасибо тонну .. :) я должен передать имя plist в качестве аргумента .. в записи в файл .. ??? – luckyShubhra