我希望从文本字段中获取NSString值并将其添加到数组中,我想在其中构建一个包含许多字符串的数组: [你好,再见,太早了]。
这是我目前的解决方案:
- (IBAction)submitButton:(id)sender {
NSMutableArray *wordArray = [[NSMutableArray alloc] init];
NSString *input = textField.text;
[wordArray insertObject:input atIndex:arrayIndex];
arrayIndex++;
}
这适用于数组中的第一项,但是当我再次按下提交时,它会重新初始化。我的问题是如何初始化要在按钮功能中使用的NSMutableArray,而不将其放在那里,这样它就不会出现这种情况。每次初始化。谢谢
答案 0 :(得分:2)
您正在使用的本地数组在submitButton
方法完成后立即消失。
将wordArray
变为实例变量并在viewDidLoad
中初始化一次。然后在submitButton:
方法(以及其他任何方法)中,引用实例变量而不是创建本地数组。
答案 1 :(得分:0)
亲爱的回答几乎是,但不是,正确。
您的代码在submitButton
方法中使用局部变量,并在每次调用方法时创建一个新的空数组。这两件事都是错的。
Honey的回答是你在viewDidLoad中创建了一个不同的局部变量。那也错了。
您需要将wordArray
设为实例变量或类的属性。如果你的类被称为ViewController,比方说,它可能看起来像这样
@interface ViewController: UIViewController;
@property (nonatomic, strong) NSMutableArray *wordArray
...
@end
然后在viewDidLoad中初始化它:
- (void)viewDidLoad {
[super viewDidLoad];
self.wordArray = [[NSMutableArray alloc] init];
}
然后在你的程序的其余部分中,参考self.wordArray
,属性。
答案 2 :(得分:0)
这是解决方案,
@implementation ViewController{
NSMutableArray *_wordArray;
}
- (void)viewDidLoad {
[super viewDidLoad];
_wordArray = [[NSMutableArray alloc] init];
}
- (IBAction)submitButton:(id)sender {
NSString *input = textField.text;
[wordArray addObject:input];
}
每次进行操作时都重新启动数组,这样可以始终保存文本字段的最后一个值。 但是这会将数组创建为全局变量,以便您可以添加在textfield中输入的所有值。
希望这可以帮助你:)