簡體   English   中英

存儲iPhone數據的最佳方法(自定義NSObject)

[英]Best way to store iPhone data (custom NSObject)

我有一個NSMutableArray ,其中存儲了稱為“地址”的對象。 地址是具有4-5個屬性的NSObjectNSStrings )。 NSMutableArray最多包含15個地址對象。

在iPhone上存儲該陣列的最佳方法是什么? Core data NSUserDefaults嗎? 我是否應該單獨存儲每個地址對象,而不是將所有對象都存儲在一個NSMutableArray 在那種情況下,我應該在iPhone上做什么?

正如@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];

對於您所描述的內容,我認為NSUserDefaults就足夠了。 請參閱這篇文章: 如何在NSUserDefaults中存儲自定義對象 您可以在此處了解有關NSUserDefaults限制的更多信息: NSUserDefaults 的限制是什么

但是,如果要保存/加載大量數據,則應考慮使用Core Data。

最簡單的方法是使用nsmutablearray讀寫方法。 所有數據必須是plist數據類型nsarray nsdictionary nsstring nsnumber nsdate。 像rog建議的Nsuserdefault也很好。 只要數據量保持很小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM