0

NSMutableArray「アドレス」と呼ばれるオブジェクトを格納する があります。アドレスは、NSObject4 ~ 5 個のプロパティを持つ です ( NSStrings)。にはNSMutableArray、最大 15 個のアドレス オブジェクトが含まれます。

その配列を iPhone に保存する最良の方法は何ですか? Core data? NSUserDefaults? すべてのアドレスオブジェクトを1つに保存するのではなく、すべてのアドレスオブジェクトを単独で保存する必要がありますNSMutableArrayか? その場合、私は何をすべきiPhoneですか?

4

3 に答える 3

4

@rogが言ったように、NSUserDefaults データを保存するために使用できます

& オブジェクトをプロトコールに従うようにする必要がありますNSCoding

たとえば、オブジェクトが「YouObject」の場合

@interface YouObject: NSObject {

}

@property (nonatomic, copy) NSString *uid;
@property (nonatomic, copy) NSString *name;

@end


//implement this 2 method 

- (id)initWithCoder:(NSCoder *)decoder {
  if (self = [super init]) {
    self.title = [decoder decodeObjectForKey:@"uid"];
    self.author = [decoder decodeObjectForKey:@"name"];
  }
  return self;
}

- (void)encodeWithCoder:(NSCoder *)encoder {
  [encoder encodeObject:title forKey:@"uid"];
  [encoder encodeObject:author forKey:@"name"];
}

次に、を使用してアーカイブまたはアーカイブ解除しますNSUserDefaults

//archive
YouObject *object = [YouObject ....]
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:object ];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"address"];

//unarchive
NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"address"];
YouObject *object = (YouObject *)[NSKeyedUnarchiver unarchiveObjectWithData:data];

または、YouObject Array がある場合は、NSArray を同じ方法で保存できます。

//archive
NSArray *addresses;
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:address ];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"address"];

//unarchive
NSData *addressData = [[NSUserDefaults standardUserDefaults] objectForKey:@"address"];
NSArray *addresses = (NSArray*)[NSKeyedUnarchiver unarchiveObjectWithData:address];
于 2013-04-20T02:00:32.310 に答える
1

あなたが説明していることについては、NSUserDefaults十分だと思います。この投稿を参照してください: How to store custom objects in NSUserDefaults . ここでの制限について詳しく知ることができNSUserDefaultsます: NSUserDefaults の制限は何ですか

ただし、大量のデータを保存/ロードする場合は、Core Data の使用を検討する必要があります。

于 2013-04-19T21:09:25.720 に答える