使用Xcode 4中的“Tab Bar”模板,每个ViewController都是自动创建的,因此我没有机会在ViewController创建时设置任何属性。我希望每个ViewController都能访问一个对象(FMDB的FMDatabase的一个实例)。
StackOverflow上有很多与此相关的问题,但有些人假设您是手动创建VC,而其他人建议使用AppDelegate作为调解员:
MyAppDelegateClass *appDelegate = [[UIApplication sharedApplicaton] delegate];
myLocalProperty = appDelegate.someDataModelProperty;
以上看起来对我来说相当“hacky”。有没有更好的方法从多个ViewControllers访问单个对象?
答案 0 :(得分:3)
FMDB数据库的最可能实现是将其实现为Singleton并通过应用程序访问它。有没有理由不这样做?
答案 1 :(得分:0)
要扩展KKK4SO的答案,您可以将数据库实现为单例。然后,让所有的UIViewControllers都是一个子类UIViewController,它包含访问和修改数据库单例的方法。
答案 2 :(得分:0)
MyAppDelegateClass * appDelegate = [[UIApplication sharedApplicaton] delegate]; myLocalProperty = appDelegate.someDataModelProperty;
此代码中存在拼写错误'sharedApplicaton'拼写错误,应该是'sharedApplication'。
羞辱我复制和粘贴!无论如何,这将适用于在ViewControllers等之间传递数据的快速而肮脏的方式。