Вопрос по ios, ios5, xcode, save – Лучший способ сохранить данные на iOS?

6

В моем приложении (iOS 5) я хочу сохранить данные - я хочу сохранить долги. Так что это:

plus or minus money the amount of money and the name who has the debts (or the name where you have the debts)

Но я не знаю, как сохранить данные (NSUserdefaults, Core data, SQLLite)

Может быть, вы можете сказать мне, как спасти их?

Сколько записей вы ожидаете сохранить? Gruntcakes
Это определено пользователем - так что я не могу знать (может быть только 4 - но также и 300). Зависит от пользователя. H3rrVorr4g3nd

Ваш Ответ

3   ответа
10

Самый простой способ сохранить небольшой объем данных на вашем устройстве - использовать NSUserDefaults. Но только списки свойств могут быть сохранены таким образом. Список свойств представляет собой комбинацию объектов 6 типов: NSNumber, NSString, NSArray, NSDictionary, NSDate, NSData. В вашем случае это легко сделать. Например, чтобы сохранить новую запись долга, вы можете использовать следующий метод:

#define DEBTS_LIST_KEY @"listOfAllDebts"
#define DEBTOR_NAME_KEY @"debtorName"
#define DEBT_AMOUNT_KEY @"amountOfDebt"

-(void) saveDebt:(CGFloat) debtAmount forName:(NSString *) debtorName
{
    // pointer to standart user defaults
    NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
    // the mutalbe array of all debts
    NSMutableArray * alldebtRecords = [[defaults objectForKey:DEBTS_LIST_KEY] mutableCopy];
    // create new record
    // to save CGFloat you need to wrap it into NSNumber
    NSNumber * amount = [NSNumber numberWithFloat:debtAmount];

    NSDictionary * newRecord = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:amount,debtorName, nil] forKeys:[NSArray arrayWithObjects:DEBT_AMOUNT_KEY, DEBTOR_NAME_KEY, nil]];
    [alldebtRecords addObject:newRecord];
    [defaults setObject:alldebtRecords forKey:DEBTS_LIST_KEY];
    // do not forget to save changes
    [defaults synchronize];
}

Чтобы прочитать список долгов, вы прочитали нечто подобное.

Но я рекомендую вам использовать основные данные. Это более гибко, и вам не нужно будет писать весь этот код для управления вашими данными (для редактирования существующих записей или их удаления). Вы сможете значительно расширить свою модель, например, когда хотите сохранить дату задолженности. Это ссылка нахороший учебник

Я новичок в Core Data, и этот урок тоже был очень полезен для меня. Я рад, что смог помочь.
Всегда думал о базовых данных ... но все учебники были немного сложны для понимания. Но ваша ссылка действительно помогла мне, и я теперь могу внедрить данные Core в свое приложение (очень просто o.O). Спасибо! :) H3rrVorr4g3nd
3

Если количество записей определяется пользователем и будет расти с ростом использования приложения, я предлагаю Core Data, который может быть поддержан SQLite. Если вы работаете в современном XCode (т.е. XCode 4), создание моделей является простым и графическим. Если вы когда-либо работали с ORM-фреймворками раньше, интерфейс для запросов и т. Д. Должен быть легким для понимания.

Ищите несколько учебных пособий, но не забудьте найти учебники, которые соответствуют вашей версии XCode, поскольку разработка Core Data в последнее время сильно изменилась.

2

Хороший и простой способ - создавать свои собственные объекты и сериализовать их с помощью NSCodying и NSCopying.

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Protocols/NSCopying_Protocol/Reference/Reference.html

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Protocols/NSCoding_Protocol/Reference/Reference.html

Похожие вопросы