kongkong's Blog

No Silver Bullet --- Computer Language is just a tool.

关于NSData与NSArray的转换,NSData写入到文件

| Comments

将NSArray转化为NSData类型

        NSData *data = [NSKeyedArchiver archivedDataWithRootObject:Array];

        NSLog(@"data = %@",data);

 

将NSData转化为NSArray类型

        NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data];

        NSLog(@"array = %@",array);

Use NSKeyedArchiver (which is the last sentence of the post Garrett links):

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];

Note that all the objects in array must conform to the NSCoding protocol. If these are custom objects, then that means you need to read up on Encoding and Decoding Objects.

Note that this will create a fairly hard-to-read property list format, but can handle a very wide range of objects. If you have a very simple array (strings for instance), you may want to use NSPropertyListSerialization, which creates a bit simpler property list:

NSString *error;
NSData *data = [NSPropertyListSerialization dataFromPropertyList:array format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error];

There's also an XML format constant you can pass if you'd rather it be readable on the wire.

2.NSArray没法直接写入到文件,必须通过转化为NSData后写入到文件

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:parsedArray];
  
        [data writeToFile:meetingDataFile options:kNilOptions error:nil];

Comments

comments powered by Disqus