Ios 如何防止将相同的字符串添加到存储的数组中

Ios 如何防止将相同的字符串添加到存储的数组中,ios,arrays,swift,Ios,Arrays,Swift,我的tableViewCell存储字符串数组。每次按下按钮后输入新字符串时,它都会添加到该数组中。但是,我不希望将同一字符串添加到该数组中两次。如何防止添加它们?我还希望在发生复制时显示一条警告消息。在将任何对象添加到数组之前检查数组是否已包含该对象,如下所示 if([yourArray containsObject:@"xyz"]){ // show alert } else{ [yourArray addObject:@"xyz"]; } 使用if和else并在if中检查输入

我的tableViewCell存储字符串数组。每次按下按钮后输入新字符串时,它都会添加到该数组中。但是,我不希望将同一字符串添加到该数组中两次。如何防止添加它们?我还希望在发生复制时显示一条警告消息。

在将任何对象添加到
数组之前检查
数组
是否已包含该对象,如下所示

if([yourArray containsObject:@"xyz"]){
     // show alert
}
else{
  [yourArray addObject:@"xyz"];
}

使用
if
else
并在
if
中检查输入的元素是否存在
else
将该元素输入数组:)

试试这个

- (IBAction)btnClicked:(id)sender
{
  if([arr_of_Strings containsObject:yourTextField.text])
{
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"ERROR" 
                                                    message:@"Same Element" 
                                                    delegate:self 
                                                    cancelButtonTitle:@"OK" 
                                                    otherButtonTitles:nil];
    [alert show];
}
else
{
  [arr_of_Strings addObject:yourTextField.text];
}

}

最好使用
NSMutableOrderedSet
而不是数组。对于给定对象,有序集只能包含一个条目。如果尝试两次添加同一对象,则不会发生任何事情,因此不需要任何自定义代码

我不知道斯威夫特是否有一个有序的集合类。我不知道其中一个,但可可基金会类完全可以从SWIFT。 编辑:
谷歌的快速搜索显示了一个错误。我没有使用它,但从描述来看,它听起来很有希望。

您只需要检查数组中是否存在该元素

这是一个例子

if (yourArray.contains(aStr!)) { 
   let alert = UIAlertView(title: "Warning", message: "This String is already in your array", delegate: self, cancelButtonTitle: nil, otherButtonTitles: "OK", nil)
   alert.show()
}

希望这会有所帮助。

如果单词的顺序不相关,您应该使用
设置

Swift中的
Set
是一个
Struct
,不能包含多个相同值的实例

这是一个被剪掉的密码

class Foo {
    var words = Set<String>()

    func add(word:String) {
        if words.contains(word) {
            showMessageToUser()
        } else {
            words.insert(word)
        }
    }

    func showMessageToUser() {
        // ....
    }
}
class-Foo{
var words=Set()
func add(字:字符串){
if words.contains(word){
showMessageToUser()
}否则{
单词。插入(单词)
}
}
func showMessageToUser(){
// ....
}
}