【发布时间】:2013-02-03 02:41:56
【问题描述】:
我的应用可以读取使用“打开方式...”对话框打开的 .txt 文件。我在两个中都实现了我的读取功能
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
和
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法。
有趣的是,它似乎只有在应用程序之前打开时才有效。如果我在即邮件中打开一个 .txt 文件并选择“打开方式”然后是我的应用程序。我可以在控制台中看到
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
被调用。我还可以看到正确文件的 URL,该文件可能位于
中file://localhost/private/var/mobile/Applications/F15C57D0-4F62-4979-943A-2D387488D59C/Documents/Inbox/myFile.txt
但是当我尝试打开文件时,我得到一个文件不存在的 Cocoa 错误。
如果我重复这些步骤(在后台打开应用程序),则找到该文件并立即运行。 这是为什么呢?
【问题讨论】:
-
你是指
openUrl:url的url还是application:didFinishLaunchingWithOptions:的options字典中UIApplicationLaunchOptionsURLKey键指定的值? -
如果您的应用尚未运行,您将收到带有选项字典中 URL 的
application:didFinishLaunchingWithOptions:消息,然后您将也收到application:openURL:sourceApplication:annotation:信息。确保您没有在第一种方法中删除文件,然后期望在调用第二种方法时它仍然存在。 -
这可能是问题所在。我在
didFinishLaunchingWithOptions和application:openURL之后删除了文件,然后没有找到任何东西。我现在只处理application:openURL中的文件,它似乎工作正常。 -
谢谢@rob mayoff。这对我来说也确实如此。我在启动时的清理过程中删除了文件。
标签: ios objective-c appdelegate ios6.1