我正在尝试最好地遵循 MVC。放置我的数据数组的“正确”位置在哪里?我说的是下面的 people 数组。它应该放在下面的 View Controller 中,还是应该是在 View Controller 中实例化的数据服务/数据存储类的一部分(通过依赖注入(inject))?我在两个地方都看到过它。
class ViewController: UIViewController {
var people: [Person] = []
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
let context = appDelegate.persistentContainer.viewContext
let fetchRequest: NSFetchRequest<Person> = Person.fetchRequest()
people = try? context.fetch(fetchRequest)
}
}
最佳答案
按照MVC的方式存放在viewController里面完全没问题。虽然,您可以将它移动到某个单独的 source 对象或 dataProvider,但大多数时候它没问题,而且从您的代码看来对我来说没问题。
我有几点意见要给你:
1) 最好从 AppDelegate 中移出 CoreData 逻辑——无论是分离单例还是服务对象(最好是,因为单例很难测试)
2) context.fetch 最好包裹在 do {} catch {} 大多数时候阻止
3) 你不必等到 viewWillAppear 触发来获取你的数据,至少从提供的代码中获取数据
4) 最好用fetchPersons这样的方法将获取逻辑移到一些服务中
关于ios - 在哪里放置数据数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46514158/