Динамическое добавление данных в список и заполнение ячеек таблицы - PullRequest
2 голосов
/ 05 августа 2011

Я разрабатываю приложение, в котором я создал plist и добавляю в него данные ... но происходит то, что каждый раз данные перезаписываются, а предыдущие данные теряются.Я имею в виду, предположим, что я добавляю одно имя под названием rocky, в следующий раз, когда я добавлю rock, rocky будет перезаписан с помощью rock, но я хочу, чтобы в моем списке plist содержалось и rocky, и rock, и так далее ...запись пользователя ....

вот мой код ниже ..

-(IBAction) myplist:(id) sender//the data is saved in a plist by clicking on this button
{
NSLog(@"mylist  Clicked");    

NSMutableArray *array = [[NSMutableArray alloc] init];

[array addObject:searchLabel.text];

   // get paths from root direcory

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);

// get documents path

NSString *documentsPath = [paths objectAtIndex:0];

// get the path to our Data/plist file

NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"];



// This writes the array to a plist file. If this file does not already exist, it creates a new one.

   [array writeToFile:plistPath atomically: TRUE];
}

Ответы [ 3 ]

0 голосов
/ 05 августа 2011

Вы не можете добавлять данные в Plist. Так как вы делаете writeToFile каждый раз, файл plist переписывается. Таким образом, данные, которые вы сохранили изначально, там не будут. Единственный другой способ достичь желаемого результата - это получить массив данных из списка. Затем добавьте новый массив данных в массив. Запишите файл plist на диск снова с новым добавленным массивом. Надеюсь, это поможет.

0 голосов
/ 05 августа 2011

Я думаю, что это послужит вашей цели с небольшим изменением вашего кода.

NSLog(@"mylist  Clicked");    
NSMutableArray *array = [[NSMutableArray alloc] init];


// get paths from root direcory

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);

// get documents path

NSString *documentsPath = [paths objectAtIndex:0];

// get the path to our Data/plist file

NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"];


//This copies objects of plist to array if there is one
[array addObjectsFromArray:[NSArray arrayWithContentsOfFile:plistPath]];
[array addObject:searchLabel.text];
// This writes the array to a plist file. If this file does not already exist, it creates a new one.

[array writeToFile:plistPath atomically: TRUE];
0 голосов
/ 05 августа 2011

Попробуйте использовать последовательность для сохранения данных в pList.

1. Извлечение старых данных из pList в NSMutableDictionary / NSMutableArray

2., Добавьте новую запись в NSMutableDictionary / NSMutableArray

3., Запись в файл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...