3

这是我的问题:我有一个plist里面有一些对象。这些对象有一些keys像“年龄”、“性别”、“人”等。如果values其中keys适合我的if statement,我把这个对象添加到我的array.

然后,当我的数组最终充满了一些合适的对象时,我想再检查每个对象的一个​​键 - “minimumCost”,NSNumber然后将对象从最便宜的对象排序到最昂贵的对象。我不知道该怎么做。你能给我一些想法、代码或解决方案吗?

这是我的代码:

-(NSMutableArray*)creatingList:(NSMutableArray *)array
    {
        NSDictionary  *mainDictionary = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"gifts" ofType:@"txt"]];

        //---enumerate through the dictionary objects inside the rootDictionary
        NSEnumerator *enumerator = [mainDictionary objectEnumerator];
        id returnValue;

        while ((returnValue = [enumerator nextObject])) 
        {
          // Big if statement comes

          if (([[returnValue valueForKey:@"sex"]isEqualToNumber:[NSNumber numberWithInt:sex]] ||
                [[returnValue valueForKey:@"sex"]isEqualToNumber:[NSNumber numberWithInt:2]]) && 
                [[returnValue valueForKey:@"person"]isEqualToString:person] &&
                age >= [[returnValue valueForKey:@"minAge"] intValue] &&
                age <= [[returnValue valueForKey:@"maxAge"] intValue])

            {  
                [array addObject:[returnValue valueForKey:@"name"]];                  
            }
        }

        for (int n = 0; n < [array count];n++)
        {
           //   WHAT CODE SHOULD BE HERE ?
        }

   return array;
}

谢谢!

4

3 回答 3

4

您可以使用内置的NSArray排序方法来完成此操作,而不是自己滚动。

在此处查看更多信息:http: //www.cocoanetics.com/2009/03/nsarray-sorting-using-selectors/

于 2012-01-13T14:39:35.003 回答
1

请找到以下代码,这是使用 Objective-c 进行冒泡排序的实现:

- (void)viewDidLoad {
   [super viewDidLoad];

    NSMutableArray *unsortedArray = [[NSMutableArray alloc]initWithObjects:@"4",@"7",@"3",@"2",@"10",@"8",nil];
    [self bubbleSort:unsortedArray];
  }

执行:

- (NSArray *)bubbleSort:(NSMutableArray *)sortedArray
{
   long count = sortedArray.count;

   bool swapped = YES;

   while (swapped)
   {
   swapped = NO;

      for (int i = 1; i < count; i++)
      {
          int x = [sortedArray[i-1] intValue];
          int y = [sortedArray[i] intValue];

          if (x > y)
          {
               [sortedArray exchangeObjectAtIndex:(i-1) withObjectAtIndex:i];
               swapped = YES;
          }
      }
   }
   return sortedArray;
}
于 2016-07-29T10:17:53.117 回答
0

这是对整数的 NSMutableArray 进行未优化冒泡排序的最简单方法。

  NSMutableArray <NSNumber *>*foo = [NSMutableArray arrayWithArray:@[@9,@8,@7,@6,@5,@4]];
  for (int i = 0; i < [foo count]; i++) {
    for (int j = 0; j < [foo count] - 1; j++) {
      if (foo[j + 1].integerValue < foo[j].integerValue) {
        NSInteger a = foo[j].integerValue;
        foo[j] = foo[j + 1];
        foo[j + 1] = @(a);
      }
    }
  }
于 2021-04-17T20:49:09.797 回答