2011-02-02 21 views
1

当我使用UITableViewControllers时 - 特别是在使用NSFetchedResultsController时 - 我发现自己在每个控制器上重复了许多基本功能。我讨厌。我非常喜欢写这些方法一次,并保持整齐。如何在使用UITableViewControllers时重复自己最小化

所以我想知道:你们如何不要重复自己写UIViewControllers。你如何DRY你的代码。继承,协议,无论如何。

谢谢!期待你的回答。

(因为这个问题没有一个明确的答案,我会接受一个我找到最好的。
是这样的方式做到这一点?)

回答

2

你可以写的基本你自己的控制器功能,然后子类化并重用它们。检查为斯坦福iPhone应用程序开发课程构建的CoreDataTableViewController类 - >http://www.stanford.edu/class/cs193p/cgi-bin/drupal/node/167

+0

我喜欢这个。我第一次尝试它时,我无法做到这一点,但我开始了,我有一些事情要做。 – mikker 2011-02-04 00:22:41

1

一种技术是对自己的子类进行子类化。这很好地模块化和隔离了这些差异,然而它产生了很多类和文件,这些文件有些难以阅读。

另一种技术,当你想创建一堆几乎完全相同的控制器,只需略有不同时,你可以使用另一种技术,即为一个类提供一个“类型”参数或实例变量。在初始化控制器时设置控制器的类型,并在“if”或switch语句(等)中使用控制器的类型以在运行时在控制器行为的细微差异之间进行选择。这可以帮助保持所有差异更紧凑地位于源代码中。

0

我做的雨燕为iOS这个新的核心数据封装 - https://github.com/tadija/AERecord

它CoreDataTableViewController的斯威夫特版本,CoreDataCollectionViewController也。

旁边,你可以用它来建立核心数据堆栈是这样的:对于当前线程

AERecord.setupCoreDataStack() 

访问背景是这样的:

AERecord.defaultContext 

保存背景是这样的:

AERecord.saveContext() 

创建像这样的提取请求:

NSManagedObject.create() 

NSManagedObject.firstOrCreateWithAttribute("city", value: "Belgrade") 

NSManagedObject.deleteAll() 

let predicate = ... 
NSManagedObject.firstWithPredicate(predicate) 

NSManagedObject.allWithAttribute("year", value: 1984) 

还有更多...我希望它对某人有用。