从属于不同类objective-c的数组中删除值

从属于不同类objective-c的数组中删除值,objective-c,arrays,Objective C,Arrays,我是新来的,而且我刚刚开始理解objective-c语言。为了练习,我决定制作一个程序,在按钮按下操作时从数组返回标签中的字符串值,并更改标签的文本。我有3个标签,所以我需要得到3个不同的值。我不想从数组中获得相同的值,所以我使用do while函数。它可以工作,但我更愿意通过函数:removeObjectAtIndex来实现这一点,这样我就可以摆脱do-while循环。我做了一些代码,没有错误,但仍然不起作用。下面是: 这是用于获取随机数(字符串)值的类的实现: 这是类的标题: #import

我是新来的,而且我刚刚开始理解objective-c语言。为了练习,我决定制作一个程序,在按钮按下操作时从数组返回标签中的字符串值,并更改标签的文本。我有3个标签,所以我需要得到3个不同的值。我不想从数组中获得相同的值,所以我使用do while函数。它可以工作,但我更愿意通过函数:
removeObjectAtIndex
来实现这一点,这样我就可以摆脱do-while循环。我做了一些代码,没有错误,但仍然不起作用。下面是:

这是用于获取随机数(字符串)值的类的实现:

这是类的标题:

#import <Foundation/Foundation.h>

@interface NumberGenerator : NSObject

@property (strong, nonatomic) NSMutableArray *numberRange;

- (NSMutableString *) randomNumber;

@end

我在没有错误但仍然不起作用的部分加了粗体。在这一部分中,我想从数组中删除对象,但它仍然什么也不做
NSLog
持续打印所有值。谢谢您的时间。

每次调用numberRange时,您都会创建一个新的完整数组。我猜这些只是初始值。为
NumberGenerator
在指定的init方法中添加nil检查或init值

要么:

- (NSMutableArray *) numberRange {
    if (_numberRange == nil) {
        _numberRange = [NSMutableArray arrayWithObjects:@"1", @"2", @"3",  @"4",  @"5",  @"6", nil];
    }
    return _numberRange;
}
或者更好

- (id)init {
    if (self = [super init]) {
        _numberRange = [NSMutableArray arrayWithObjects:@"1", @"2", @"3",  @"4",  @"5",  @"6", nil];
    }
    return self;
}

//Not really needed - can be removed
- (NSMutableArray *) numberRange {
    return _numberRange;
}

那么你做了什么来调试这个呢?
#import "ViewController.h"
#import "NumberGenerator.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a               nib.

self.numberGenerated = [[NumberGenerator alloc] init];
}

- (IBAction)buttonPressed {

// First number

self.firstNumber.text = [self.numberGenerated randomNumber];

NSUInteger firstVal = [self.firstNumber.text intValue] -1;
NSLog(@"%lu", (unsigned long)firstVal);
[self.numberGenerated.numberRange removeObjectAtIndex: firstVal];
NSLog(@"%@", self.numberGenerated.numberRange);

self.secondNumber.text = [self.numberGenerated randomNumber];

do {
        self.secondNumber.text = [self.numberGenerated randomNumber];
  } while (self.secondNumber.text == self.firstNumber.text);
}
@end
- (NSMutableArray *) numberRange {
    if (_numberRange == nil) {
        _numberRange = [NSMutableArray arrayWithObjects:@"1", @"2", @"3",  @"4",  @"5",  @"6", nil];
    }
    return _numberRange;
}
- (id)init {
    if (self = [super init]) {
        _numberRange = [NSMutableArray arrayWithObjects:@"1", @"2", @"3",  @"4",  @"5",  @"6", nil];
    }
    return self;
}

//Not really needed - can be removed
- (NSMutableArray *) numberRange {
    return _numberRange;
}