微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用可可粉存储对象数组的最佳方法是什么?

如何解决用可可粉存储对象数组的最佳方法是什么?

| 我有一个NSMutableArray,其中包含许多对象。一些是Nsstring,其他是NSMutableArrays,其他是NSNumber。存储此数据以便应用程序可以再次使用它的最佳方法是什么? 阵列也需要保持秩序。 我在想一个plist或NSUserDefaults? 非常感谢     

解决方法

        考虑使用
NSKeyedArchiver
// Archive
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:theArray];
NSString *path = @\"/Users/Anne/Desktop/archive.dat\";
[data writeToFile:path options:NSDataWritingAtomic error:nil];

// Unarchive
NSString *path = @\"/Users/Anne/Desktop/archive.dat\";
NSMutableArray *theArray = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
它的效果很好,特别是在数组包含的字符串和数字之外的情况下。 这样,您可以确保未归档的数组与原始数组相同。     ,        假设其他数组也只包含数字,字符串和数组(或其他属性列表类型),则plist将是存储数据的好方法。它可以保持顺序,并且易于使用。 要将数组写入plist文件,请使用
writeToFile:atomically:
[myArray writeToFile:@\"path/to/file.plist\" atomically:YES];
若要阅读,请使用
initWithContentsOfFile:
myArray = [[NSMutableArray alloc] initWithContentsOfFile:@\"path/to/file.plist\"];
但是,这将创建具有不可更改内容的可变数组。要创建具有可变内容的数组,可以使用
CFPropertyListCreateDeepCopy
NSArray *temp = [[NSArray alloc] initWithContentsOfFile:@\"path/to/file.plist\"];
myArray = (NSMutableArray*) CFPropertyListCreateDeepCopy(kCFAllocatorDefault,(CFArrayRef)temp,kCFPropertyListMutableContainers);
[temp release];
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。