2013-04-12 74 views
0

與NSKeyedUnarchiver在MonoTouch的MonoTouch的NSKeyedUnarchiver

尋求幫助,在SQLite BLOB字段Storying的字典項的數組

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, ×69(0x73)的,0x74,爲0x30,的0x30) (MonoTouch.Foundation.MonoTouchException)在(包裝 管理-to-天然) MonoTouch.ObjCRuntime.Messaging:monotouch_IntPtr_objc_msgSend_IntPtr (IntPtr的,IntPtr的,IntPtr的)在 MonoTouch.Foundation.NSKeyedUnarchiver..ctor (MonoTouch.Foundation.NSData數據)[0x00027]在 /開發商/ MonoTouch的/ Source/monotouch/src/Foundation/NSKeyedUnarchiver.g.cs:88 Stacktrace:

從新NSKeyedUnarchiver(數據)線

人們可以有人建議對MonoTouch的NSKeyedUnarchiver教程/例子嗎?

兩個可以有人幫助這個錯誤?

末這是在光的最佳方式,該項目是要跨平臺和工作的Android(最終)

在此先感謝

回答

1

的問題很可能與你如何創建初始的NSData下。

This是NSData.FromString做的,它看起來不像你在Objetive-C中做的事情。

如果您有一個C#指針,請嘗試使用NSData.FromBytes

+0

非常感謝,嘗試FromBytes也沒有幫助。它會運行,但除了初始字節[] item.pricing以外,一切都是空白/空/空。我可以嘗試的任何其他東西 – NewDev

+0

你會得到與FromBytes相同的異常嗎? –