簡體   English   中英

NSDictionary來自NSMutableData

[英]NSDictionary From NSMutableData

我以前使用initWithContentsOfURL將plist下載到NSDictionary中,但是當在同一線程上運行時,這會掛起UI,所以現在我移到NSURLConnection了,問題是我無法再使用NSMutableData調用初始化NSDictionary的方法。 將NSMutableData放入NSDictionary的最佳方法是什么?

您需要的是NSPropertyListSerialization:

NSDictionary *myDict = [NSPropertyListSerialization propertyListFromData:myData mutabilityOption:NSPropertyListImmutable format:nil errorDescription:nil];

是最簡單的選項。

在不完全知道您要做什么的情況下,我將對此采取行動。 即使它不起作用,我也可以根據您的目的進行調整。

NSString *s = [[NSString alloc] initWithBytes:[mutableData bytes] length:[mutableData length] encoding:NSUTF8StringEncoding];
NSString *path = NSTemporaryDirectory();
path = [path stringByAppendingPathComponent:@"tmpfile.txt"];
if ([s writeToFile:path atomically:NO encoding:NSUTF8StringEncoding error:nil]) {
    NSDictionary *d = [[NSDictionary alloc] initWithContentsOfFile:path];
}

用簡單的英語,從給定的數據創建一個字符串,將其寫到臨時文件中,然后將臨時文件加載到NSDictionary對象中。

該代碼遠非完美(需要諸如錯誤檢查之類的東西),但它可能會讓您入門。

警告:我已經編寫Cocoa軟件已有好幾年了,但是我從未接觸過iPhone,所以這是一個猜測。

您的NSDictionary是否還需要保留其他數據?

在connection:didReceiveResponse:方法(NSUrlConnection的代理)中,您可以將舊的NSDictionary復制到NSMutableDictionary中,然后也將URL響應數據插入其中。 然后將NSMutableDictionary轉換為新的NSDictionary。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM