在 Monotouch 中寻求 NSKeyedUnarchiver 的帮助
在 SQLite blob 字段中记录字典项数组
IOS代码
NSData *data = [[NSData alloc] initWithBytes:ptr length:size];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSMutableArray *myArray = [unarchiver decodeObjectForKey:@"pricing"];
[unarchiver finishDecoding];
NSMutableArray *MutData = [[NSMutableArray alloc] init];
for (NSDictionary *obj in myArray) {
NSMutableDictionary *element = [[NSMutableDictionary alloc] initWithDictionary:obj];
[MutData addObject:element];
}
尝试转换为 MonoTouch,到目前为止我有
MonoTouch 代码
NSData data = NSData.FromString(item.pricing);
NSKeyedUnarchiver unarchive = new NSKeyedUnarchiver(data);
unarchive.DecodeObject();
unarchive.FinishDecoding();
NSMutableArray array = unarchive.GetNativeField("pricing") as NSMutableArray;
NSMutableArray mutArray = new NSMutableArray();
for (uint count=0; count < array.Count; count++)
{
NSMutableDictionary mutDict = new NSMutableDictionary(array.ValueAt(count));
mutArray.Add(mutDict);
}
运行时产生和错误
未处理的托管异常:抛出了 Objective-C 异常。名称:NSInvalidArgumentException 原因:* -[NSKeyedUnarchiver initForReadingWithData:]:无法理解的存档(0x62、0x70、0x6c、0x69、0x73、0x74、0x30、0x30)(MonoTouch.Foundation.MonoTouchException)在(包装器托管到本机)MonoTouch。 ObjCRuntime.Messaging:monotouch_IntPtr_objc_msgSend_IntPtr (intptr,intptr,intptr) 在 MonoTouch.Foundation.NSKeyedUnarchiver..ctor (MonoTouch.Foundation.NSData 数据) [0x00027] 在 /Developer/MonoTouch/Source/monotouch/src/Foundation/NSKeyedUnarchiver.g。 cs:88 堆栈跟踪:
从新的 NSKeyedUnarchiver(data) 行
有人可以建议 MonoTouch NSKeyedUnarchiver 的教程/示例吗?
两个人可以帮助解决这个错误吗?
最后,鉴于该项目是跨平台并在Android下工作(最终),这是最好的方式吗
提前致谢