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