【发布时间】:2018-10-07 06:47:14
【问题描述】:
我的任务是用户data 使用strut 方法附加到items 数组并分配给tableView tableData array。在我的代码中,我在多个地方使用了 tableData 一些validations。
现在,我的问题是,当我将 background 移动到 foreground 时,我可以看到我的表数据,但是如果我从 background 中删除应用程序,那么如果我打开我的 application,则有 @987654331 @表视图。所以,我需要明白。如何 tableData store 到 UserDeafult 然后 retrieve 加载 tableView 以避免 data 丢失。
// Array declaration
var items = [Item]()
var tableData = [Item]()
public func documentPicker(_ controller: UIDocumentPickerViewController,didPickDocumentsAt urls: [URL]) {
// Here I am getting user selected file url and its name from iCloud.
// I skipped to paste here.
// User picked file data appending into items array
items.append(Item(url: bookurl, title: name))
// Assign items data to tableData
if let data = UserDefaults.standard.data(forKey:"items") {
do {
let itemsUser = try PropertyListDecoder().decode(Array<Item>.self, from: data)
tableData = itemsUser
} catch { print(error) }
}
}
// MARK - TABLE VIEW DELEGATIONS
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.tableData.count
}
// TableView data-load
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CustomTableViewCell
let item = tableData[indexPath.row]
cell.name_label.text = item.name
}
return cell
}
【问题讨论】:
-
你在哪里从 userdefaults 获取?
-
我们需要查看更多代码来了解您面临的问题。请分享更多您的代码。如果不是太大,最好是全班。
-
请检查我在帖子@RakeshaShastri 中更新了我的代码
-
您应该具有从该委托之外的用户默认值获取 tableData 的逻辑,最好是在您需要使用该数据填充表时调用的方法。当然,在那之后打电话给
reloadData()。 -
对不起,我无法理解。你的意思是我需要在选择器文档委托之外维护这个 if let data = UserDefaults.standard.data(forKey:"items") {...} ? @RakeshaShastri
标签: ios swift uitableview nsuserdefaults