以前は initWithContentsOfURL を使用して plist を NSDictionary にダウンロードしていましたが、これを同じスレッドで実行すると UI がハングするため、NSURLConnection に移動しました。問題は、NSMutableData で NSDictionary を初期化するメソッドを呼び出すことができなくなったことです。NSMutableData を取得して NSDictionary に配置する最良の方法は何ですか?
3344 次
3 に答える
3
必要なのは NSPropertyListSerialization です:
NSDictionary *myDict = [NSPropertyListSerialization propertyListFromData:myData mutabilityOption:NSPropertyListImmutable format:nil errorDescription:nil];
最も簡単なオプションです。
于 2009-08-16T13:58:17.507 に答える
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 に触れたことがないので、推測です。
于 2009-08-16T13:50:35.410 に答える
0
NSDictionary には、保持する必要がある他のデータがありますか?
connection:didReceiveResponse: メソッド (NSUrlConnection のデリゲート) では、古い NSDictionary を NSMutableDictionary にコピーしてから、URL 応答データも挿入できます。次に、NSMutableDictionary を新しい NSDictionary に変換します。
于 2009-08-16T14:04:41.833 に答える