我们有一个应用程序,我们使用 NSCoding 将我们的对象数据归档到 NSData。然后我们获取 NSData 并将其发送到 XML 解析器并将其发送到云服务器进行存储。
我们有一个客户希望能够在云服务器上更改或创建他们自己的对象,然后让我们的应用程序再次读取 NSData 并查看对象的内容。
客户是基于 Windows 的,因此我们需要一种方法让他们能够以编程方式生成与 NSData 存储的相同数据结构。我可以向他们提供我正在解码的数据密钥和数据类型。
有没有办法对 NSData 对象进行逆向工程,并从非 Objective-C 的东西中注入、修改等?
更新: 2012.0413 添加代码:
这是我用来获取数据的代码:
NSMutableData *data = [NSMutableData data];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
//go and encode ourselves so we can save our state in CD.
[self encodeWithCoder:archiver];
这是 encodwWithCoder 例程:
-(void) encodeWithCoder:(NSCoder *)encoder {
//See if mama has anything for us...
[super encodeWithCoder:encoder];
//encode our state
[encoder encodeObject:[self elementName] forKey:@"name" ];
[encoder encodeObject:[self elementViewContents] forKey:@"elementViewContents" ];
[encoder encodeObject:[self elementGestureRecognizerView] forKey:@"elementGestureRecognizerView" ];
[encoder encodeCGRect:self.frame forKey:@"frame"];
[encoder encodeCGRect:self.bounds forKey:@"bounds"];
[encoder encodeCGPoint:self.center forKey:@"center"];
[encoder encodeBool:elementLocked forKey:@"elementLocked"];
}
谢谢!