【问题标题】:NSString Value of NSArray ObjectNSArray 对象的 NSString 值
【发布时间】:2010-01-17 18:43:30
【问题描述】:

我试图弄清楚为什么这段代码不起作用。我正在尝试搜索字符串是否包含“| P”。如果是的话,我想做点什么。

NSMutableArray *list = [pView getPOIList];
NSString *cellValue = [list objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;
NSArray *chunks = [cellValue componentsSeparatedByString: @"|P"];
//NSLog([[chunks count] stringValue]);
if([&chunks[1] isEqualToString:@"|P"]) {
       //Do Something
}

这会使我的应用崩溃。

【问题讨论】:

    标签: iphone nsstring nsarray


    【解决方案1】:

    NSArray *chunks 是 NSArray,而不是 C 数组。您可以使用[chunks objectAtIndex:1] 代替&chunks[1] 来查找对象。

    要查找一个字符串是否包含其他字符串,您可以使用([cellValue rangeOfString:@"IP"].length == 0)。如果范围的长度为 0,则该字符串在原始字符串中不存在。 Reference

    【讨论】:

    • 谢谢。 objectAtIndex 是问题所在。我还需要用 | 分割字符串,而不是 |P。
    • 如果您使用的是 rangeOfString ,最好查找 .location = NS_NOT_FOUND (至少我认为您在做什么更清楚)
    【解决方案2】:

    1. 您不会将NSArrays 编入x[1] 的索引。你通过过于冗长的[x objectAtIndex:1]来做到这一点。

    2. componentsSeparatedByString: 将用|P 分隔字符串,所以如果字符串是:

    .

      FOO|PURPLE|BAR|PIE|42|P|P2
    

    分开的字符串会变成

      ("FOO", "URPLE|BAR", "IE|42", "", "2")
    

    您不会在结果数组中找到包含字符串|P 的元素。如果要判断子串是否存在,使用rangeOfString:。

      NSRange substrRng = [cellValue rangeOfString:@"|P"];
      if (substrRng.location != NSNotFound) {
        ....
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 2010-11-04
      • 2011-06-01
      • 2011-09-28
      相关资源
      最近更新 更多