比较两个包含自定义Swift对象的数组之间的数据

时间:2018-05-31 16:23:12

标签: arrays swift

我收到的一些数据是通过API将JSON返回给我的。我知道我可以获取它并将API中的相关信息存储到我的iOS应用程序中。但只有在应用程序运行时。 I.E.我没有实现YET如何将从API获取的信息存储到UserDefalults中。使用此功能我遇到了一个问题。

我有两个数据跟踪我的数据。第一个数组是我在获取数据时要存储在UserDefaults中的数组。这个被称为“贷方”并保留LenderData 第二个数组是我的临时数组。它包含相同类型的对象,这是我想用API中的数据填充,然后与我现有的数组“贷方”进行比较。

我想检查“lenders”数组是否包含任何与我在“lendersTemp”数组中查看的对象具有相同ID的对象。如果lenders Array不包含任何具有我们当前正在查看的tempLender的id的LederData对象,我们将tempLender添加到lenders数组中。我该怎么做呢?

我目前的(非工作)解决方案如下:

var lenders = [LenderData]()
var lendersTemp = [LenderData]()

...
// Get JSON DATA
...

for tempLender in self.lendersTemp {
    if !self.lenders.contains(where: {$0.id == tempLender.id}) {
        self.lenders.append(tempLender)
     }
}

修改 我的观点确实加载了方法:

var lenders = [LenderData]()
var lendersTemp = [LenderData]()

override func viewDidLoad() {
    super.viewDidLoad()

    downloadJSON {
        self.myTableView.reloadData()
    }

    self.myTableView.rowHeight = 90
    myTableView.delegate = self
    myTableView.dataSource = self
}

1 个答案:

答案 0 :(得分:0)

我找到了一些帮助!所以这是我对自己问题的回答!

我的问题是从我的API获取数据是使用asyc方法完成的。在我的TableView上调用reload方法后,我尝试进行比较。因此,在调用reloadData()之后,我没有填充tableview从中获取数据的数组,因此看起来我的tableview和比较算法没有用,实际上它确实有效!