NSDictionary objectForKey / valueForKey已经格式化?

时间:2010-12-03 13:06:06

标签: cocoa formatting nsdictionary

我正在接收JSON-Data并将其转换为字典。 打印字典会产生以下描述:

Objekt: {
author = blub;
authorUID = 28084;
date = "31.07.10";
numVotes = 0;
postUID = 30931;
text = "... <b>Atemtest</b> durchf\U00c3\U00bchren m\U00c3\U00bcssen?...";
timestamp = 1280585555;}

我想要的是取代例如\U00c3\U00bc\U00bc

那就是我被困住的地方。 [dictionary objectForKey:@"text"]返回已格式化的字符串,如<b>Atemtest</b> durchführen zu müssen?

valueForKey的行为相同。

1 个答案:

答案 0 :(得分:1)

两个输出只是字典中相同底层NSString对象的不同表示,我相信它已经从JSON中的任何内容重新编码为UTF-16。

如Peter Hosey对this related question的回答所述,NSDictionary的输出正在对字符串进行编码,以使其符合plist的预期文本表示。

在你的情况下,听起来你可能并不真的想回到那个表示(尽管如果你这样做,那么看看上面提到的问题的答案),而是直接在NSString,类似这样:

NSString* oldStr = @"\u00c3\u00bc";
NSString* newStr = @"\u00bc";

NSString* text = [dictionary objectForKey:@"text"];
NSString* replaced = [text stringByReplacingOccurrencesOfString:oldStr withString:newStr];

源代码中的\uXXXX序列将转换为NSString常量中的相关UTF-16字符,然后这些字符将在目标中进行匹配和替换。