2009-08-16 1 views
0

以前はinitWithContentsOfURLを使用してNSDictionaryにplistをダウンロードしていましたが、これは同じスレッドで実行するとUIをハングするので、NSURLConnectionに移動しました。 NSMutableDataを持つNSDictionary NSMutableDataを使ってNSDictionaryに入れる最良の方法は何ですか?NSDictionary NSMutableDataから

答えて

3

はNSPropertyListSerializationです:

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

は、最も単純なオプションです。

1

あなたがしようとしていることを正確に知らなくても、私はこれで刺すつもりです。それがうまくいかなくても、あなたの目的に合ったものにすることができます。平易な英語で

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を触ったことがないので、それは推測です。あなたが必要なもの

0

あなたのNSDictionaryには、保存する必要がある他のデータがありますか?

接続:didReceiveResponse:メソッド(NSUrlConnectionのデリゲート)では、古いNSDictionaryをNSMutableDictionaryにコピーしてから、URL応答データを挿入することができます。その後、NSMutableDictionaryを新しいNSDictionaryに変換します。