2

オブジェクトのリストを保存する小さな iPhone アプリがあります。ユーザーはオブジェクトを追加および削除できますが、このリストはかなり小さいままです (ほとんどのユーザーは 10 ~ 30 個のオブジェクトを持っています)。NSUserDefaults作業ははるかに簡単に思えますが、sqlite3より速くなるでしょうか? わずか 30 の「レコード」で、顕著な違いはありますか?

4

2 に答える 2

5

NSUserDefaults はユーザー設定用で、通常は NSString や NSNumber などの基本的なオブジェクトです。Sqlite、プロパティ リスト内のオブジェクトのコレクションのシリアル化、または Core Data はすべて、作成したモデル オブジェクトなどのユーザー データを格納するための有効なオプションです。

速度の違いは見られませんが、実行していることに適したメカニズムを選択することをお勧めします。設定だけの場合は NSUserDefaults を使用します。それ以外の場合は、オブジェクトを plist にシリアル化します。Cocoa を初めて使用する場合は、最初に Core Data や sqlite を避けて、最初に基本を学ぶ機会を自分に与えます。

于 2009-05-30T18:45:12.333 に答える
2

NSCoding プロトコルを試してください。NSCoding プロトコルを実装するクラスを宣言します。

@interface Person : NSObject <NSCoding>

前の行では、次のメソッドを実装することを約束しています。

-(id)initWithCoder:(NSCoder *)coder;
-(void)encodeWithCoder:(NSCoder *)coder;

メソッドは次のようになります。

-(void)encodeWithCoder:(NSCoder *)coder {
  [super encodeWithCoder:coder];
  [coder encodeObject:firstName forKey:@"firstName"];
  [coder encodeObject:lastName forKey:@"lastName"];
}

-(id)initWithCoder:(NSCoder *)coder {
  [super init];
  firstName = [[coder decodeObjectForKey:@"firstName"] retain];
  lastName = [[coder decodeObjectForKey:@"lastName"] retain];
  return self;
}
于 2009-05-30T20:54:19.547 に答える