2012-02-05 5 views
0

Я пытаюсь создать загрузочный модуль сохранения & в моем приложении. Таким образом, пользователь может сохранить определенную информацию и загрузить ее в любой момент времени. Что я сохраняю, это массив NSMutableStrings. Я создаю приложение для iPad, поэтому сохраненная информация будет представлена ​​в Popover с помощью TableView.Заполнение UITableView массивами строк

Итак, вот вопрос. Я хотел бы заполнить этот tableView своими сохраненными массивами, и для этого мне нужно где-то хранить свои массивы. Я новичок в области объектно-ориентированного программирования и программирования в целом и хотел бы, чтобы вы посоветовали, как это сделать.

Должен ли я использовать plist для хранения этих массивов с помощью клавиш, поэтому ключи будут именами, которые пользователь вводит при сохранении, а также имя ячейки tableView? или, может быть, простой NSMutableDictionary?

Просьба сообщить.

ответ

1

This answer может вам помочь. Использование Core Data может быть чрезмерным, и экономить на plist очень просто. Это ответ Benoit от связанного вопроса:

NSString *error; 
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
    NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"yourFile.plist"]; 
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:rootObj 
    format:NSPropertyListXMLFormat_v1_0 errorDescription:&error]; 
if(plistData) { 
    [plistData writeToFile:plistPath atomically:YES]; 
} 
else { 
    NSLog(@"Error : %@",error); 
    [error release]; 
} 

где rootObj является объект, который вы хотите сериализовать, в этом случае ваш массив/словарь.


Кроме того, если вы собираетесь читать/писать на эти данные часто во время вашего приложения, используя singleton, который может сделать огромной разницы в производительности мудрого вместо того, чтобы постоянно чтение/запись из/в файл. Вы можете загрузить все свои данные в singleton при запуске приложения и сохранить его на applicationWillTerminate.

Чтобы ответить на ваш вопрос в массиве/словаре, это зависит от того, как вы получаете свои строки и как вы хотите, чтобы их заказывали. Сортировка массива чрезвычайно проста, как вы можете видеть в ответе this.

+0

Спасибо за ответ, Риккай. Вы были очень основательны. Тем не менее, я нашел учебное пособие для одной и той же вещи, и я думаю, что это соответствует моим потребностям лучше: http://ipgames.wordpress.com/tutorials/writeread-data-to-plist-file/ Также спасибо за советы singleton , но пока я не настолько сообразителен, чтобы понять, как это работает и как я могу его использовать. Вероятно, я вернусь к этому, если я действительно столкнусь с проблемой. Я дам эту попытку и вернусь, если появятся какие-либо вопросы –

+0

Хорошо, удачи! –

+0

Спасибо, мне это нужно;) Подходит к концу разработки моего самого первого приложения, поэтому я очень возбужден: D –

0

Сергей, на основе вашего описания, я бы посоветовал вам изучить Core Data для хранения данных.

https://developer.apple.com/library/mac/#documentation/cocoa/conceptual/coredata/cdprogrammingguide.html

В дополнении к хранению данных, Apple расширила использование основных данных во всех видах аккуратных способов, включая использование хранимых данных для заполнения UITableViewController посредством использования NSFetchedResultsController

https://developer.apple.com/library/ios/#documentation/CoreData/Reference/NSFetchedResultsController_Class/Reference/Reference.html

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

+0

Благодарим вас за советы gitJelly, но не являются ли данные Core слишком сложными для таких простых операций? Я имею в виду, я просто храню несколько массивов со строками. –

Смежные вопросы