获取" __ NSArrayI stringByReplacingOccurrencesOfString:withString:"

时间:2015-12-09 07:42:12

标签: objective-c json

我正在尝试获取" items.snippet.title"的内容。来自服务器上的JSON文件。(Getting JSON Data

但我会得到的内容是日语和unicode逃脱 所以我使用Converting Text转换了文字。

        ``Getting JSON Data``
        NSString *origin = [NSString stringWithFormat: @"URLIncluding%@",videoID];
        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:origin]];
        NSData *json = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
        NSArray *array = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingAllowFragments error:nil];`enter code here`
        NSString *titleConvert=[array valueForKeyPath:@"items.snippet.title"];

        ``Converting Text``
        NSString* esc1 = [titleConvert stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];
        NSString* esc2 = [esc1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
        NSString* quoted = [[@"\"" stringByAppendingString:esc2] stringByAppendingString:@"\""];
        NSData* data = [quoted dataUsingEncoding:NSUTF8StringEncoding];
        NSString* unesc = [NSPropertyListSerialization propertyListFromData:data
                                                       mutabilityOption:NSPropertyListImmutable format:NULL
                                                       errorDescription:NULL];
        assert([unesc isKindOfClass:[NSString class]]);
        NSLog(@"Output = %@", unesc);

但是我有错误说

 -[__NSArrayI stringByReplacingOccurrencesOfString:withString:]: unrecognized selector sent to instance 0x7f99a8dc5e70

任何人都知道解决方案吗?

3 个答案:

答案 0 :(得分:0)

看起来路径“items.snippet.title”返回一个数组。 items键可能是JSON数据中的数组。

答案 1 :(得分:0)

在数组上调用valueForKeyPath会返回一个数组。它不能是任何其他方式,因为您没有指定索引到数组的方式/位置。您需要使用特定索引或循环处理数组,然后导航键路径以获取字符串数据。

答案 2 :(得分:0)

当JSON返回数组时:使用快速迭代迭代数组,例如

for (NSDictionary* dict in array)

当您有字典时:使用订阅语法访问元素,例如

NSString* aString = dict [@"title"];

请勿使用以"值"开头的方法。你不明白他们做了什么。不,你不是,因为如果你这样做,你就不会在这里提问。他们有时可能会做你想做的事情,然后可能会导致可怕的错误。除此之外,他们很慢:-(

错误信息应该是显而易见的:你认为有一些东西是NSString,但实际上它是一个NSArray。这是你的错。向NSArray发送NSString消息崩溃。

顺便说一句。你有一个阵列。是什么让你认为它只有一个元素?拥有一个数组将是毫无意义的。编写可以处理多个数组元素的代码。