从一个数组元素中分离两个字符串

Posted

技术标签:

【中文标题】从一个数组元素中分离两个字符串【英文标题】:Separate two strings from one array element 【发布时间】:2013-04-28 18:15:57 【问题描述】:

我想知道是否有人可以提供一些帮助。基本上我正在调用网络服务,然后尝试获取大型托管图像 url。 Web 服务的输出是这样的:

images =     (
                
            hostedLargeUrl = "http://i.yummly.com/Crispy-roasted-chickpeas-_garbanzo-beans_-308444.l.jpg";
            hostedSmallUrl = "http://i.yummly.com/Crispy-roasted-chickpeas-_garbanzo-beans_-308444.s.jpg";
        
    );

主要问题是这两个字符串仅在我的数组元素之一中,而我认为它们应该在 2 中。而且我不是 100%,但可能它们可能是字典:-S 我不是当然。我的代码如下:

    NSArray *imageArray = [[NSArray alloc]init];
    imageArray = [self.detailedSearchYummlyRecipeResults objectForKey:@"images"];
    NSLog(@"imageArray: %@", imageArray);
    NSLog(@"count imageArray: %lu", (unsigned long)[imageArray count]);
    NSString *hostedLargeurlString = [imageArray objectAtIndex:0];    
    NSLog(@"imageArrayString: %@", hostedLargeurlString);

上述代码的输出(nslog)是:

2013-04-28 18:59:52.265 CustomTableView[2635:11303] imageArray: (
        
        hostedLargeUrl = "http://i.yummly.com/Crispy-roasted-chickpeas-_garbanzo-beans_-308444.l.jpg";
        hostedSmallUrl = "http://i.yummly.com/Crispy-roasted-chickpeas-_garbanzo-beans_-308444.s.jpg";
    
)
2013-04-28 18:59:52.266 CustomTableView[2635:11303] count imageArray: 1
2013-04-28 18:59:52.266 CustomTableView[2635:11303] imageArrayString: 
    hostedLargeUrl = "http://i.yummly.com/Crispy-roasted-chickpeas-_garbanzo-beans_-308444.l.jpg";
    hostedSmallUrl = "http://i.yummly.com/Crispy-roasted-chickpeas-_garbanzo-beans_-308444.s.jpg";

有谁知道如何将一个元素分别分成hostedlargeUrl 和hostedsmallUrl?

非常感谢您提供的任何帮助!

【问题讨论】:

【参考方案1】:

实际上图像数组包含一个字典

images = ( 
        
          hostedLargeUrl = "http://i.yummly.com/Crispy-roasted-chickpeas-_garbanzo-beans_-308444.l.jpg";
          hostedSmallUrl = "http://i.yummly.com/Crispy-roasted-chickpeas-_garbanzo-beans_-308444.s.jpg";
        
);

所以:

NSDictionary *d = [self.detailedSearchYummlyRecipeResults objectForKey:@"images"][0];
NSString *largeURL = d[@"hostedLargeUrl"];
NSString *smallURL = d[@"hostedSmallUrl"];

【讨论】:

...以及下面的所有人。我可能没有尝试过您的答案,但非常感谢您的帮助。 还有一件事。有没有一种方法可以让我基本上检查变量所持有的数据类型?是否有某种“这是一种”方法可以在这种情况下提供帮助?【参考方案2】:

[imageArray objectAtIndex:0] 的值是一个 NSDictionary。您错误地将其指定为 NSString。您需要以下内容:

  NSDictionary *hostedLarguerDictionary =
    (NSDictionary *) [imageArray objectAtIndex:0];

然后访问“大网址”使用:

   hostedLarguerDictionary[@"hostedLargeUrl"]

或者,等价

   [hostedLarguerDictionary objectForKey: @"hostedLargeUrl"];

【讨论】:

【参考方案3】:

看起来像一个数组,所以

NSArray* links = [self.detailedSearchYummlyRecipeResults objectForKey:@"images"];
NSString* bigLink = [links objectAtIndex:0];
NSString* smallLink = [links objectAtIndex:1];

也可以是字典

NSDictionary* links = [self.detailedSearchYummlyRecipeResults objectForKey:@"images"];
    NSString* bigLink = [links objectForKey:@"hostedLargeUrl "];
    NSString* smallLink = [links objectForKey:@"hostedSmallUrl "];

你可以通过打印出类名来查看对象的类

NSLog(@"Class Type: %@", [[self.detailedSearchYummlyRecipeResults objectForKey:@"images"] class]);

【讨论】:

以上是关于从一个数组元素中分离两个字符串的主要内容,如果未能解决你的问题,请参考以下文章

从给定的字符串中分离字符串

如何从共享内存中分离字符串数组? C

如何从输入字符串中分离整数并将它们转换为 int 类型以允许对它们进行计算

如何从字符串中分离许多不同的单词(Java)

如何从查询字符串中分离“选择顶部 * x”?

为啥在 c++ 中分配 char 数组元素时,分配的字符被破坏?