我的任务是从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
}
答案 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)
}