JSON 応答と plist ファイルを含む辞書があります。plist ファイルの値を JSON 応答値で更新したいと考えています。どうすればいいですか?
質問する
3926 次
2 に答える
8
これは私がやったことです、私は今それに取り組んでいますが、私はそこに着いています:
JSON から辞書へ:
NSString *jsonString = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
//NSLog(@"%@",jsonString);
NSArray *result = [jsonString JSONValue];
for(NSDictionary *dictionary in result){
return dictionary; //if you are getting more then one row, do something here
}
辞書の保存:
id plist = plistDict;
NSString *errorDesc;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *plistPath = [documentsDirectory stringByAppendingPathComponent:@"Data.plist"];
NSLog(@"%@",plistPath);
NSData *xmlData;
NSString *error;
xmlData = [NSPropertyListSerialization dataFromPropertyList:plist
format:NSPropertyListXMLFormat_v1_0
errorDescription:&error];
if(xmlData) {
if ([xmlData writeToFile:plistPath atomically:YES]) {
NSLog(@"Data successfully saved.");
}else {
NSLog(@"Did not managed to save NSData.");
}
}
else {
NSLog(@"%@",errorDesc);
[error release];
}
}
値を更新する場合は、plist を開いて辞書に配置し、辞書の値を更新して、辞書を plist に再度保存する必要があります。
お役に立てれば。
于 2009-11-28T13:01:59.287 に答える
1
Mac OS X 10.7 または iOS 5 で作業している場合、JSON ファイルを読み書きする NSJSONSerialization という Foundation クラスがあります。JSON を plist に変換するのは次のように簡単です: (ARC または GC がオンになっていることを意味します)
NSString *infile = @"/tmp/input.json"
NSString *oufile = @"/tmp/output.plist"
[[NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:infile]
options:0
error:NULL] writeToFile:oufile
atomically:YES];
ただし、NSDate および NSData オブジェクトは JSON に表示できないため、plist から JSON への変換はより面倒になります。ファイルの内容を確認し、NSData と NSDate を別の方法で保存する必要がある場合があります (NSData を Base-64 文字列として、NSDate を UNIX 時間として保存するなど)。
于 2012-06-06T03:17:44.417 に答える