Objective-c:在XML中序列化自定义类对象以保存在磁盘上并发送到服务器

时间:2014-03-22 11:01:18

标签: objective-c xml xml-serialization nscoding

我一直试图这样做一个星期......没有运气!

对象书:
字符串ISBN
int NumOfPages
字符串标题
字符串作者(等)

对象库:
MuttableArray书籍

现在我需要为类库的Object编写一个方法,将XML中所有书籍的所有信息写入磁盘。此XML数据也需要通过网络发送到服务器。服务器正在运行JAVA,我需要能够在服务器上使用类库和Book的对象。

我这就是我到目前为止所做的事情:
课本:

@interface Book : NSObject <NSCoding>

@property                   NSString            * title;
@property                   NSString            * author;
@property                   int                 * numOfPages;

@end

班级图书馆:

@interface Library : NSObject 

@property                   NSMuttableArray     * Books;
-(void) syncLibraryToFile;

@end

1 个答案:

答案 0 :(得分:2)

默认存档程序生成二进制文件。如果需要XML,则必须更改输出格式。

NSMutableData *archiveData = [NSMutableData data];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]
    initForWritingWithMutableData:archiveData];
archiver.outputFormat = NSPropertyListXMLFormat_v1_0;
[archiver encodeRootObject:self.Books];
[archiver finishEncoding];

现在您可以将archiveData发送到服务器了。如果您想要JSON,它仍然更容易,并且不需要第三方框架。

NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self.Books
                                                   options:0
                                                     error:&error];

将数据写入磁盘有很多选项,包括NSData方法

– writeToFile:atomically:
– writeToFile:options:error:
– writeToURL:atomically:
– writeToURL:options:error:

修改

在回复评论中的问题时......您可以轻松地将数据写入文件...

[archiveData writeToFile:filePath atomically:YES];

[jsonData writeToFile:filePath atomically:YES];