【问题标题】:How to check if a string is contained on an NSArray entry?如何检查字符串是否包含在 NSArray 条目中?
【发布时间】:2011-11-11 16:56:57
【问题描述】:

假设我有一个 NSArray,它看起来像:

(
    "zad0xsis|mac",
    "+zad0xsis",
    @someone,
    %another-one",
    ~admin,
)

如何检查 NSString 是否等于数组中的某个值(但总是删除前面的 +、@、~、% 符号)?我虽然关于使用for 循环,但不确定如何

【问题讨论】:

    标签: objective-c macos cocoa


    【解决方案1】:

    引用的其他方法都很好。另一种选择是利用 NSArray 的基于块的枚举方法。基于块的方法允许您利用您正在开发的平台上的并发性,并且是未来的方式。我想到的方法如下:

    • (NSUInteger)indexOfObjectWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))谓词

    所以对于您的情况,您可以使用以下内容:

    NSUInteger theIndex=NSNotFound;
    theIndex=[theArray indexOfObjectWithOptions:NSEnumerationConcurrent passingTest:^(id obj, NSUInteger, idx, BOOL *stop){
         if ([obj rangeOfString: aString]!=NSNotFound]){
             *stop=YES;
             return YES;
         }
         return NO;
    }];
    

    这里也讨论了解决方案:How to check if an NSString contains one of the NSStrings in an NSArray?

    祝你好运

    【讨论】:

      【解决方案2】:

      您可以使用rangeOfString,它是NSString Class 的一部分。

      BOOL exists = NO;
      for (NSString *what in myArray)
      {
          if ([someSearchString rangeOfString:what].location != NSNotFound) {
              exists = YES;
              break;
          }
      }
      

      【讨论】:

      • 有没有办法知道找到的结果的索引?
      【解决方案3】:

      终于用上了

      for(int i=0; i<[self.userArray count]; i++) {
             NSString *user = [self.userArray objectAtIndex:i];
             NSLog(@"%@", user);
      }
      

      这让我得到了我正在寻找的索引

      【讨论】:

        猜你喜欢
        • 2017-09-23
        • 1970-01-01
        • 2016-03-25
        • 1970-01-01
        • 2020-12-12
        • 2017-02-27
        • 1970-01-01
        • 2021-11-10
        • 2011-03-31
        相关资源
        最近更新 更多