【发布时间】:2020-09-08 03:13:23
【问题描述】:
格式化后的JSONData:
(title: "delectus aut autem", completed: false)
(title: "delectus aut autem", completed: true)
(title: "delectus aut autem", completed: true)
(title: "delectus aut autem", completed: false)
我的结构:
struct TodoListResponse: Decodable {
let title: String
var completed: Bool
}
领域数据模型
class TodoIItemList: Object {
@objc dynamic var title: String = ""
@objc dynamic var completed: Bool = false
}
ParseJson 数据并通过didUpdateData() 委托函数将数据发送到ViewController
func parseJSON(toDoListData: Data) {
let decoder = JSONDecoder()
do {
let jsonData = try decoder.decode([TodoListResponse].self, from: toDoListData)
self.delegate?.didUpdateData(jsonData)
} catch{
delegate?.didFailWithError(error: error)
}
}
在我的viewcontroller、didUpdateData() 中,我想将我的数组保存到 Realm,但我失败了。我如何在此处保存数据。
import UIKit
import RealmSwift
class ViewController: UIViewController {
let realm = try! Realm()
var todoLists: Results<TodoIItemList>?
@IBOutlet weak var todoListTable: UITableView!
var dataManager = DataManager()
var listArray = [TodoListResponse]()
override func viewDidLoad() {
super.viewDidLoad()
dataManager.delegate = self
dataManager.fetchTodoListInformation()
//MARK: - call UITableView
setupTableView()
}
//MARK: - Setup or Register UITableView
func setupTableView() {
todoListTable.dataSource = self
todoListTable.register(UINib(nibName: K.cellNibName, bundle: nil), forCellReuseIdentifier: K.cellReuseIdentifier)
//todoListTable.separatorStyle = .none
todoListTable.contentInsetAdjustmentBehavior = .never
todoListTable .reloadData()
}
func save(_ object: [Object]) {
do{
try realm.write{
realm.add(object)
}
}catch{
print(error)
}
}
委托方法:
//MARK: - TodoDataManagerDelegate
extension ViewController: TodoDataManagerDelegate{
func didUpdateData(_ todoData: [TodoListResponse]) {
listArray = todoData
print("list: \(todoData)")
DispatchQueue.main.async {
//save(todoItem: listArray)
self.todoListTable.reloadData()
}
}
}
提前致谢。
【问题讨论】: