返回一个NSNumbers数组,NSIntegers作为参数

时间:2015-09-01 23:26:53

标签: ios objective-c iphone

返回NSNumbers数组作为参数

我正在尝试在两个整数之间创建一个NSNumbers数组,包括在内。 提供了两个参数numberotherNumber

注意:numberotherNumber可能是较低的数字,但字符串始终包含从最低到最高的数字。

我希望能够在两个整数之间返回一个NSNumber数组,包括在内。

我没有得到程序运行的任何编译错误,但是,它没有通过单元测试。我错过了什么吗?非常感谢您的帮助!

- (NSArray *) arrayOfNumbersBetweenNumber:(NSInteger)number andOtherNumber: (NSInteger)otherNumber {

NSNumber *newNumber = [NSNumber numberWithInteger:number];
NSNumber *otherNewNumber = [NSNumber numberWithInteger:otherNumber];

NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects:newNumber, otherNewNumber, nil];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:nil ascending:YES];
[mutableArray sortUsingDescriptors:@[sortDescriptor]];

NSArray *myArray = [mutableArray copy];
return myArray;

2 个答案:

答案 0 :(得分:0)

目标-C

- (NSArray *)arrayOfNumbersBetweenNumber:(NSInteger)number andOtherNumber:(NSInteger)otherNumber {
    NSMutableArray *mutableRange = [NSMutableArray new];
    for (NSInteger i = number; i <= otherNumber; i++)  {
        [mutableRange addObject:@(i)];
    }
    return [mutableRange copy];
}

答案 1 :(得分:-1)

您只是向数组中添加两个数字,即两个边界,而不是所有中间数字。添加数字然后排序也是非常低效的。你可以使用一个简单的for循环。

以下是Swift的答案,因为Playground让它更容易,我不得不给你一些工作:)

func arrayOfNumbersBetween(startNumber:NSInteger, endNumber:NSInteger) -> NSArray {
    let loopStart=min(startNumber,endNumber)
    let loopEnd=max(startNumber, endNumber)

    let returnArray=NSMutableArray()

    for number in loopStart...loopEnd {
        returnArray.addObject(NSNumber(integer: number))
    }

    return returnArray 
}