首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储iPhone数据的最佳方式(自定义NSObject)

存储iPhone数据的最佳方式(自定义NSObject)
EN

Stack Overflow用户
提问于 2013-04-20 04:50:42
回答 3查看 3.8K关注 0票数 0

我有一个NSMutableArray,我在其中存储名为"address“的对象。地址是具有4-5个属性(NSStrings)的NSObjectNSMutableArray应包含最多15个address对象。

在iPhone上存储该数组的最佳方式是什么?Core dataNSUserDefaults?我是否应该单独存储每个address对象,而不是将所有对象都存储在一个NSMutableArray中?在这种情况下,我应该在iPhone上做些什么

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-20 10:00:32

正如@rog所说,您可以使用NSUserDefaults来保存数据

应使对象遵循协议NSCoding (&U)

例如,如果你的对象是"YouObject“

代码语言:javascript
复制
@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进行归档或取消归档

代码语言:javascript
复制
//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数组,你可以用同样的方式保存NSArray;

代码语言:javascript
复制
//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];
票数 4
EN

Stack Overflow用户

发布于 2013-04-20 05:09:26

对于您所描述的内容,我认为NSUserDefaults就足够了。请看这篇文章:How to store custom objects in NSUserDefaults。你可以在这里了解更多关于NSUserDefaults限制的信息:What are the limitations of NSUserDefaults

但是,如果您要保存/加载大量数据,则应考虑使用Core data。

票数 1
EN

Stack Overflow用户

发布于 2013-04-23 09:47:32

最简单的方法是使用nsmutablearray读写方法。所有数据都必须是plist数据类型nsarray nsdictionary nsstring nsnumber nsdate。像rog建议的Nsuserdefault也很好。只要数据量仍然很小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16113287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档