将标量写入文件

时间:2013-04-12 14:50:52

标签: ios ios5 nsarray plist

我有以下对象的数组:

@interface SACameraLocation : NSObject
{
    NSInteger locId;
    NSString *name;
    CLLocationCoordinate2D coordinate;
    NSInteger speed;
    NSInteger shootingMode;
    NSInteger side;
}

然后我试图将数组写入plist文件:

if([arr writeToFile:path atomically:YES])
    NSLog(@"Write OK");
else
    NSLog(@"Write Fail");

由于标量对象,我猜这个失败了。将此类对象序列化/反序列化为文件的最简单方法是什么?

1 个答案:

答案 0 :(得分:0)

请阅读NSArray writeToFile:atomically:的文档:

  

如果数组的内容都是属性列表对象(NSString,NSData,NSArray或NSDictionary对象),则此方法编写的文件可用于使用类方法arrayWithContentsOfFile:或实例方法initWithContentsOfFile初始化新数组: 。在写出文件之前,此方法以递归方式验证所有包含的对象是属性列表对象,如果所有对象都不是属性列表对象,则返回NO,因为生成的文件不是有效的属性列表。

您无法编写自定义对象数组。这就是它失败的原因。您可以让您的类符合NSCoding协议并实现两个必需的方法。然后,您可以使用NSData将对象转换为NSKeyedArchiver。或者您可以使用归档器一次编码整个数组,然后写出一个NSData对象。

另一个选择是将您的对象转换为NSDictionary并写出这些词典的数组。