2011-05-26 60 views
0

我在执行AppDelegate的didFinishLaunchingWithOptions之前运行方法“ViewDidLoad”时遇到了一个奇怪的问题! 原因我只检查数据库是否存在于“didFinishLaunchingWithOptions”中,如果数据库不存在,我的应用程序崩溃。经过几个小时的探讨后,我厌倦了这样做,并呼吁HEEEEELP! 如果您愿意,可以这么友善,并指出我正确的方向可能是我的项目有什么问题。我不知道(aaarggh!)ViewDidLoad在AppDelegate didFinishLaunchingWithOptions执行之前运行!

谢谢!

问候 汤姆

+0

你是如何检查数据库的存在。显示代码将有所帮助。 – Abizern 2011-05-26 13:55:40

+0

发布appDidFinishLaunching的一些代码,如果没有创建数据库,则创建它。 – 2011-05-26 14:04:15

+0

如果您来自后台,didFinishLaunchingWithOptions不会运行,以防万一您不知道。 – vakio 2011-05-26 14:14:53

回答

-1

我不相信你。

application:didFinishLaunchingWithOptions:您决定加载哪些视图。该应用程序不会随机加载视图,而无需告知它这样做。您是否首先在viewDidLoadapplication:didFinishLaunchingWithOptions:中首先放置断点,或者您是否假设application:didFinishLaunchingWithOptions:未被执行,因为它不起作用。

+0

它终于会得到“应用程序:didFinishWithOptions”如果应用程序崩溃的第一手,但在我的代码中断viewcontroller“viewDidLoad”因为没有数据库被复制,它不会执行“应用程序:didFinishLaunchingWithOptions”(其中的数据库复制发生) – Tom 2011-05-27 06:27:08

+0

我只是困惑的事实,应用程序:didFinishWithOptions“不再以正确的顺序(作为第一)运行,我很感兴趣,你怎么改变它再次正确的顺序.... – Tom 2011-05-27 06:30:19

3

的viewDidLoad因为这些调用didFinishLaunchingWithOptions前装从发钞银行加载ViewControllers可以运行:

+0

有没有办法来防止它? – Jaroslav 2012-10-25 15:16:37

0

我有同样的问题,并在寻找更详细的代码后,我发现这里面的awakeFromNib xViewController,我正在启动另一个yViewController。所以yViewController的viewDidLoaddidFinishLaunchingWithOptions:之前运行。

基本上,最初的VC的awakeFromNib之前调用didFinishLaunchingWithOptions:。你可能有类似的设置。研究一下。

0

如果您的数据库文件加载速度不够快,覆盖你的AppDelegate的init():

override init() { 
    if filesExistBool == false { 
     addDBFiles() 
    } 
} 
相关问题