Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 何时/什么/为什么/如何使用应用程序中launchOptions中UIApplicationOptions UrlKey的值(应用程序:willFinishLaunchingWithOptions:)?_Ios_Swift_Uikit_Appdelegate_Uiapplicationdelegate - Fatal编程技术网

Ios 何时/什么/为什么/如何使用应用程序中launchOptions中UIApplicationOptions UrlKey的值(应用程序:willFinishLaunchingWithOptions:)?

Ios 何时/什么/为什么/如何使用应用程序中launchOptions中UIApplicationOptions UrlKey的值(应用程序:willFinishLaunchingWithOptions:)?,ios,swift,uikit,appdelegate,uiapplicationdelegate,Ios,Swift,Uikit,Appdelegate,Uiapplicationdelegate,背景 我刚刚开始学习苹果的API,现在,我正在学习uiapplicationelegate的功能。 更具体地说,我正在剖析func应用程序(应用程序:UIApplication,willFinishLaunchingWithOptions启动选项:[NSObject:AnyObject]?)->Bool 问题 在launchOptions中可以找到的一个键是uiapplicationaunchoptionsurlkey。 此密钥何时存在? 对应于键,有一些值。 此值中包含什么? 给我这个键值对

背景

我刚刚开始学习苹果的API,现在,我正在学习
uiapplicationelegate
的功能。 更具体地说,我正在剖析
func应用程序(应用程序:UIApplication,willFinishLaunchingWithOptions启动选项:[NSObject:AnyObject]?)->Bool


问题

launchOptions
中可以找到的一个键是
uiapplicationaunchoptionsurlkey
此密钥何时存在?

对应于键,有一些值。 此值中包含什么?

给我这个键值对是有原因的我为什么要使用它?

最后也是最重要的一点:如何使用它?


附加信息

据我所知,我正在做一个样板项目。 下面是其中的内容:

func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool
    {
        print("application(application:willFinishLaunchingWithOptions:)")

        if let options: [NSObject: AnyObject] = launchOptions
        {
            for option: (key: NSObject, AnyObject) in options
            {
                switch option.key
                {
                // The presence of this key indicates that the app was launched in order to open a URL. The value of this key is an NSURL object containing the URL to open.
                case UIApplicationLaunchOptionsURLKey:
                    <#code#>
                ...
func应用程序(应用程序:UIApplication,willFinishLaunchingWithOptions启动选项:[NSObject:AnyObject]?)->Bool
{
打印(“应用程序(应用程序:willFinishLaunchingWithOptions:)”)
如果让选项:[NSObject:AnyObject]=启动选项
{
对于选项:(键:NSObject,AnyObject)
{
开关选项.key
{
//此键的存在表示启动应用程序是为了打开URL。此键的值是包含要打开的URL的NSURL对象。
案例UIApplicationAunchoptionSurlkey:
...

对于未来的项目,我计划用其他东西来取代
,以利用
UIApplicationLaunchOptionsURLKey

的键值对功能,可能还有其他原因,但我用它来用我的应用打开特定的文件

“我的应用程序”以自己的格式保存备份文件。如果用户的设备中有其中一个文件,他可以选择使用“我的应用程序”打开该文件。如果他这样做,我的应用程序将打开,并发生以下情况:

func application(application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        if let url = launchOptions?[UIApplicationLaunchOptionsURLKey] as? NSURL {
            handleBackupFile(url)
        }
        return true
}
除了通常启动应用程序外,我还调用了
handleBackupFile()
来处理备份文件

如果我的应用程序可以打开多种类型的文件,我可能会检查它是什么类型的文件

编辑:

下面是我的应用程序Leio的一个实际示例:


当用户点击“复制到Leio”时我的应用程序打开,代码被调用。

我会在最后改写这个问题,因为你真的可以把任何东西都放在那里。@TroyT——这一点很好。我已经将这个问题编辑成了一个声明,因为我确实已经问了我在帖子前面确实想回答的问题。你能澄清一下在用户体验中它的意思吗:我是吗当他们选择“打开…”并选择你的应用程序时,或者什么?还有,这个URL看起来如何?我不确定这是否算是离题:我假设你的应用程序不是“复制到Leio”,可能只是“Leio”。如果是这样,你在哪里有机会让应用程序图标下的文本显示“复制到Leio”而不是“Leio”?url是文件系统目录中文件路径的url。在我的示例中,文件保存为注释中的附件,因此目录可能是Notes应用程序附件的路径加上文件名,在这种情况下类似于
notesPath/leio_04etc。lbf
这是对应值的url吗ng到
UIApplicationLaunchOptionsURLKey
?是的。我根本没有设置该文本,因为它会让我对本地化感到头疼,所以这是默认文本。您可能可以在某个地方更改它,但现在我不确定在何处,可能在何时设置应用程序可以打开的文件。