如何将NSArray排序的NSStrings拆分为NSMutableArray的NSMutableArray

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将NSArray排序的NSStrings拆分为NSMutableArray的NSMutableArray相关的知识,希望对你有一定的参考价值。

我想知道如何将按字母顺序排序的NSStrings的NSArray拆分为NSMutableArray的NSMutableArray。

比如说我的NSArray看起来像这样

Alice
Awesome
Bacon
Beef
Hat
Hooters
Horse

我希望NSMutableArray的NSMutableArray看起来像这样

-- Alice
   Awesome

-- Bacon
   Beef

-- Hat
   Hooters
   Horse

我知道很可能需要使用for for循环来完成但是我只是不确定如何捕获第一个字母。

这是我提出的伪代码

NSMutableArray *mainArray = [NSMutableArray alloc] init];

for (int i = 0; i < [sortedArray count]; i++) {
  NSMutableArray *subArray = [NSMutableArray alloc] init];
  NSString *currentString = [sortedArray objectAtIndex:i];

  if (figure out if first character of currentString is what it is supposed to be){
    [subArray addObject:currentString];
  }

  [mainArray addObject:subArray];
}

我知道这是关闭的,for循环逻辑是关闭的,但是那找到第一个字母就是我遇到问题的地方。据我所知,有一个更快的委托方法可以自动完成所有操作,但这就是我提出这个问题的原因。

答案
NSString* currentLetter;
NSMutableArray* currentSubArray;

for( NSString* name in sortedArray ){

    NSString* firstLetterOfName = [name substringToIndex:1];

    if( [firstLetterOfName isEqualToString:currentLetter] ){
        // Name first letter is equal to the last one, so just add to current sub array
        [currentSubArray addObject:name];
    }
    else{
        // New letter found, create a new sub array and add to main one

        currentSubArray = [[NSMutableArray alloc] initWithObjects:name, nil]; // needs nil
        currentLetter = firstLetterOfName;
        [mainArray addObject:currentSubArray];
    }

}

那样的东西?

另一答案

该过程的关键是:

unichar ch = [currentString characterAtIndex:0];

以上是关于如何将NSArray排序的NSStrings拆分为NSMutableArray的NSMutableArray的主要内容,如果未能解决你的问题,请参考以下文章

如何在请求中使用 NSStrings 映射 NSArray (RESTKit)

如何通过数组对象的 NSDate 日期将 NSArray 拆分为 NSDictionary?

如何从包含任意对象的 NSSet 创建排序的 NSArray?

如何将 NSArray 拆分为按字母顺序排列的部分以与索引表视图一起使用

如何将 NSNumber 转换为 NSString

在ios中将NSString拆分为NSArray