我有一个NSMutableArray
存储名为“地址”的对象。一个地址是一个NSObject
具有 4-5 个属性 ( NSStrings
) 的地址。NSMutableArray
应包含最多 15 个地址对象。
在 iPhone 上存储该数组的最佳方式是什么?Core data
? NSUserDefaults
? 我是否应该将每个地址对象单独存储,而不是将所有对象存储在一个中NSMutableArray
?在那种情况下,我该怎么办iPhone
?
我有一个NSMutableArray
存储名为“地址”的对象。一个地址是一个NSObject
具有 4-5 个属性 ( NSStrings
) 的地址。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 也不错。只要数据量仍然很小。