7

私のアプリケーション(iOS 5)では、データを保存したい-借金を保存したい。っていうことは:

  • プラスまたはマイナスのお金
  • 金額
  • と借金を持っている名前(またはあなたが借金を持っている名前)

しかし、データ(NSUserdefaults、Core data、SQLLite)を保存する方法はありません

たぶんあなたはそれらを救うための最良の方法を教えてもらえますか?

4

3 に答える 3

11

デバイスに少量のデータを保存する最も簡単な方法は、NSUserDefaultsを使用することです。ただし、この方法で保存できるのはプロパティリストのみです。プロパティリストは、NSNumber、NSString、NSArray、NSDictionary、NSDate、NSDataの6種類のオブジェクトの組み合わせです。あなたの場合、それは簡単です。たとえば、新しい債務レコードを保存するには、次の方法を使用できます。

#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];
}

債務のリストを読むには、似たようなものを読んだことがあります。

ただし、コアデータを使用することをお勧めします。より柔軟性があり、データを管理するために(既存のレコードを編集したり、削除したりするために)このコードをすべて記述する必要はありません。たとえば、債務の日付を保存したい場合などに、モデルをはるかに簡単に拡張できます。これは良いチュートリアルへのリンクです

于 2012-06-17T16:20:42.227 に答える
3

レコードの量がユーザー定義であり、アプリの使用に伴って増加する場合は、SQLiteでサポートできるCoreDataをお勧めします。最新のXcode(つまり、Xcode 4)で作業している場合、モデルの作成は簡単でグラフィカルです。これまでにORMフレームワークを使用したことがある場合は、クエリなどのインターフェイスがわかりやすいはずです。

いくつかのチュートリアルを探しましょう。ただし、コアデータの開発は最近大きく変化しているため、Xcodeのバージョンに一致するチュートリアルを見つけることについて具体的に説明してください。

于 2012-06-17T16:10:01.523 に答える
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

于 2012-06-17T16:01:57.973 に答える