2016-01-14 17 views
1

在我的應用程序中,我從parse.com對象中檢索URL。從Swift中的按鈕動作打開URL

我想打開設備的瀏覽器,並顯示當用戶點擊按鈕時從Parse接收到的URL。

這是操作:

@IBAction func botonNuevos(sender: AnyObject) { 

     let query = PFQuery(className: "datos_contacto") 
     query.getObjectInBackgroundWithId("H52ZxGm3U8", block: { 
      (questionObject: PFObject?, error: NSError?) -> Void in 

      let webNuevos: AnyObject! = questionObject!.valueForKey("dato_contacto") 

      print(webNuevos) //= http://www.touchemotors.com 

      if let webCallURL = NSURL(string: webNuevos as! String) { 
       let application = UIApplication.sharedApplication() 
       if application.canOpenURL(webCallURL) { 
        application.openURL(webCallURL) 
       } 
       else{ 
        print("failed") 
       } 
      } 


     }) 
    } 

單擊該按鈕時,日誌顯示接收到的URL,但瀏覽器不啓動並顯示任何錯誤。

請告訴我的代碼有什麼問題。謝謝

+0

我測試你的代碼,一切工作正常。顯示此對象的questionObject!.valueForKey(「dato_contacto」)值。 –

+0

@OlegGordiichuk,我已經包括它作爲評論後打印(webNuevos),對象的收到價值是:http://www.touchemotors.com – mvasco

回答

1

UPDATE

與OP討論後,最後事實證明,通過questionObject!.objectForKey("dato_contacto")返回的值必須在最後空格,以NSUrl(string:)沒有解析它做好。

UPDATE

您使用錯誤的方法NSObject.valueForKey()。改爲使用PFObject.objectForKey()

對於iOS 9

here

如果您的應用程序在iOS 9.0或鏈接後,您必須聲明的網址,您想通過這種方法 方案。通過在Xcode項目的Info.plist 文件中使用 LSApplicationQueriesSchemes數組來執行此操作。對於您希望應用程序使用此方法的每個URL方案, 將其作爲字符串添加到此數組中。

如果您的(iOS 9.0或更高版本)應用使用您尚未聲明 的方案調用此方法,則該方法返回false,無論該方案的適當應用是否安裝在設備上。

添加http方案LSApplicationQueriesSchemes陣列Info.plist

+0

謝謝@mixel。如果我讓webCallURL = NSURL(string:webNuevos as!String)而不是變量webNuevos直接在該行寫入URL,那麼一切正常。瀏覽器啓動並顯示URL。 – mvasco

+0

我想我找到了你得到這個錯誤的原因。我更新了我的答案。 – mixel

+0

謝謝@mixel,但使用objectForKey()或valueForKey()我得到了相同的結果爲webNuevos:http://www.touchemotors.com也是相同的行爲,瀏覽器未啓動 – mvasco