使用Text Field将String添加到NSMutableArray

时间:2016-11-29 22:12:23

标签: ios objective-c

我希望从文本字段中获取NSString值并将其添加到数组中,我想在其中构建一个包含许多字符串的数组: [你好,再见,太早了]。

这是我目前的解决方案:

- (IBAction)submitButton:(id)sender {


NSMutableArray *wordArray = [[NSMutableArray alloc] init];
NSString *input = textField.text;
[wordArray insertObject:input atIndex:arrayIndex];
arrayIndex++;
}

这适用于数组中的第一项,但是当我再次按下提交时,它会重新初始化。我的问题是如何初始化要在按钮功能中使用的NSMutableArray,而不将其放在那里,这样它就不会出现这种情况。每次初始化。谢谢

3 个答案:

答案 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中输入的所有值。

希望这可以帮助你:)