如何验证数组值是否已经存在

时间:2018-10-06 11:29:27

标签: ios arrays swift

我的任务是从files中选择iCloud,它是url,title,etc.,然后追加到项目array中。之后,我将在struct的帮助下获取每个值,并在tableView中列出。

在这里,我需要了解的一件事是,如何validate用户选择的文件已经存在或不在我的数组中。如果存在,则不允许在其文件后附加alert消息。

// Array Declaration
var items = [Item]()
var tableArray = [Item]() 

// Values appending into my array
items.append(Item(url: fileurl, title: filename, exten: fileextension, size: string))

// Tableview data load
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CustomTableViewCell
    let item = tableArray[indexPath.row]

        if tableArray.count > 0 {
            cell.name_label_util.text = item.title
            cell.size_label_util.text = item.size
        }
    return cell
}

2 个答案:

答案 0 :(得分:0)

通过在现有Item数组上添加过滤器,可以检查items是否已经存在。如果结果为nil,则添加新的项目对象。

注意:我正在使用url进行检查,它应该是唯一的。或以Item模式中的唯一键替换它。

if items.filter({ $0.url == fileurl }).first == nil {
    items.append(Item(url: fileurl, title: filename, exten: fileextension, size: string))
}

替代品:

if items.index(where: { $0.url == fileurl }) == nil {
    items.append(Item(url: fileurl, title: filename, exten: fileextension, size: string))
}

答案 1 :(得分:0)

您可以使用contains(where:)通过比较类中的唯一属性来检查数组是否包含元素。

if !items.contains(where: {$0.url == fileUrl}) {
    items.append(yourItem)
}