将NSArray写入文件

时间:2011-11-03 23:31:55

标签: objective-c ios cocoa-touch

我正在尝试将数据保存/写入文档目录,而我完全被卡住了。我已经在线查看了多个来源的代码。我从和NSArray切换到NSMutableArray,但是没有用。据我所知,文件没有被写入,因为测试将返回null。提前致谢

NSArray *results = [parser objectWithData:data1];

NSMutableArray *array2 = [[NSMutableArray alloc] initWithArray:results];
// Create a dictionary from the JSON string  

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"EmployeeData.plist"];

//NSLog(@"the path is %@, the array is %@", path, array2);

/////write to file/////
[array2 writeToFile:path atomically:YES];

NSMutableArray *test = [[NSMutableArray alloc ]initWithContentsOfFile:path];

NSLog(@"the test is %@", test);

**更新**

我添加了这些代码行

BOOL write = [results writeToFile:path atomically:YES];

NSLog(@"did it right? %@", write);

并且写为空,这是什么意思?

这是我的数组

中的众多对象之一
{
     0 = "<null>";
    1 = "John Doe";
    10 = 512;
    11 = "<null>";
    12 = 1;
    13 = 1;
    2 = Doe;
    3 = Jon;
    4 = "<null>";
    5 = johndoe;
    6 = "<null>";
    7 = "<null>";
    8 = "john@doe.com";
    9 = "<null>";
    Type = 1;
    Active = 1;
    Depart = "<null>";
    Emp = "<null>";
    Ext = "<null>";
    FirstName = Jim;
    Fl = 512;
    Name = "John Doe";
    Log = jd;
    Mobile = "<null>";
    Title = "<null>";
}

空值是否与它有关?

解决!!

我意识到空值可能导致了一些问题,所以我改变了我的查询来处理它并立即保存。上面的代码是100%正确的,它可以工作!

感谢您的帮助

1 个答案:

答案 0 :(得分:16)

根据documentationwriteToFile:仅在您的数组内容仅限于少数几种类型(NSStringNSDataNSArrayNSDictionary个对象)。如果您的数组中有任何其他类型的对象,则它将无法正确写入文件(或根本不写入文件)。

另请注意,writeToFile:返回一个布尔值,指示操作是否成功。

如果您的数组包含不兼容的类型,则必须使用类似NSKeyedArchiver的内容来序列化数据。