好的,所以标题不是很清楚 - 抱歉,我无法找到一个好方法来表达我想要完成的事情。
所以这是我的设置 - 我有一个抽象的CoreData类,称之为Parent
,name
和photo
。然后,我从Child1
继承了Child2
和Parent
我希望UITabViewController
有2个标签:Child1
和Child2
,每个标签的UIViewController
都会有UITableView
来显示name
和photo
(因此只是抽象基类中的属性)。
这样做的最佳方法是什么? " Easy"这样做的方法就是忽略抽象基类,为UIViewController
标签创建2个不同的UITabViewController
,每个标签都有NSFetchedResultsController
,并且有很多重复的代码。 />
但必须才能更好地解决这个问题吗?
答案 0 :(得分:0)
对于任何有兴趣的人来说,这就是我最终要做的事情
我有Parent
抽象基类及其2个子类Child1
和Child2
我创建了一个通用UIViewController
,用于保存名为Parent
的{{1}}实体:
ParentUIViewController
然后我创建了另外两个var entity: String { get { return "Parent" } }
let context = (UIApplication.shared.delegate as! AppDelegate).managedObjectContext
lazy var fetchedResultsController: NSFetchedResultsController<ListObject> = {
let fetchRequest = NSFetchRequest<Parent>(entityName: self.entity)
let sort = NSSortDescriptor(key: "name", ascending: true)
fetchRequest.sortDescriptors = [sort]
let frc = NSFetchedResultsController(
fetchRequest: fetchRequest,
managedObjectContext: self.context,
sectionNameKeyPath: nil,
cacheName: nil)
frc.delegate = self
return frc
}()
override func viewDidLoad() {
super.viewDidLoad()
// do stuff with fetchedResultController
// fetchedResultsController.object(atIndex: IndexPath) has a "name" and "photo" attribute so I use them
}
,而我所要做的只是
UIViewController