ios - objective-c 将NSDictionary valueForKeyPath转换为字符串

标签 ios nsstring nsdictionary

我有一个NSDictionary,我正试图摆脱一些局限。字典的名称称为推文。通过执行以下操作,我可以获取用户名和鸣叫。

 NSDictionary *tweet = self.detailItem;
 NSString *username = [[tweet objectForKey:@"user"] objectForKey:@"name"];
 NSString *tweetText = [tweet objectForKey:@"text"];

如果我NSLog我得到的结果; username是“个人的用户名”,tweetText是“个人的推文”。这些都是我可以操纵的NSString。

但是,我还需要从推文中获取实际的URL,而不是从简短的URL中获取。因此,我在字典中使用valueForKeyPath找到了它。我需要将此作为字符串,并尝试了以下方法。
NSString *url = [tweet valueForKeyPath:@"entities.urls.display_url"];

我也可以使用NSLog来获取正确的信息。但是我认为它以数组形式出现? NSLog看起来像这样。.url是(“URL进入此处”)。用方括号和引号引起来。这与其他字符串不同。我假设这是因为valueForKeyPath。当我尝试使用URL hasPrefix时,它不喜欢这样,并提到您不能将andPrefix与and数组一起使用。但是我也尝试将多个objectForKey与实体,URL和display_url一起使用。但这是行不通的。有什么办法可以将我的输入内容转换为字符串格式。我已经在网络上查看了一些SO问题,但是找不到对我有用的任何东西。任何帮助将不胜感激。谢谢你的时间

最佳答案

对于Twitter's documentation on entitiesentities是字典,urls是字典数组。

当执行... valueForKeyPath:@"entities.urls.display_url"]时,您将执行与... valueForKey:@"entities"] valueForKey:@"urls] valueForKey:@"display_url"]相同的操作。

对于 NSDictionary 's documentation,如果所讨论的键不是以@开头,则它的valueForKey:返回与objectForKey:相同的内容。

因此,entitiesvalueForKeyPath:部分返回一个对象数组。

对于 NSArray 's documentation,其valueForKey:返回一个数组,该数组由分别对数组中每个对象调用valueForKey:的结果组成。

鉴于entities数组中的每件事都是一个字典,因此您得到的是推文中每个实体的display_url键的数组。

因此,我认为您的问题是您希望获得“来自tweet的实际URL”(添加了重点)。推文可能包含任意多个向外的链接,而不仅仅是一个链接-实体代表具有特殊含义的字符范围,例如链接,主题标签等。因此,您最终得到的是数组而不是单个值。

关于ios - objective-c 将NSDictionary valueForKeyPath转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17555410/

相关文章:

ios - 通过 NSString 过滤字典数组

iphone - 不符合键值编码

除非打开 Quicktime,否则 AVCaptureDevice.devices() 不会列出 iOS 设备

iphone - 查看 NSString drawInRect 将使用多少行的简单方法?

ios - 如何将 url.query 转换为 Swift 中的字典?

ios - 在 iOS 5 中从 Web 服务器获取 json 时出现问题

ios - UIAlertView 防止周围屏幕变暗

ios - LaunchScreen.xib 工具栏中 UIBarButtonItem 的自定义系统字体

ios - 用重音符号替换字符 - ios

ios - 匹配一个 NSString 和一个 UILabel 的文本