2017-01-12 10 views
-1

、オプションの種類を持っていない必要があり、私は間違って何が起こっているのか分からないがhere.pleaseスウィフト:結合条件のための初期化子がNSURL

func buttonPressed(sender: UIButton){ 
    print("button pressed") 


    if let path = NSBundle.mainBundle().pathForResource("book", ofType: "pdf") { 
     if let targetURL = NSURL.fileURLWithPath(path) { 

      docController = UIDocumentInteractionController(URL: targetURL) 
      let url = NSURL(string:"itms-books:"); 

      if UIApplication.sharedApplication().canOpenURL(url!) { 

       docController!.presentOpenInMenuFromRect(CGRectZero, inView: self.view, animated: true) 

       print("iBooks is installed") 

      }else{ 

       print("iBooks is not installed") 
      } 

     } 
    } } 

とエラーここ

if let targetURL = NSURL.fileURLWithPath(path) 

である私を助けて私に教えてください答えに何が間違っていますか? ありがとう...

+0

スウィフトスイフトバージョンをお使いですか? 2.3? –

+5

ドキュメントを参照してください。 'NSURL.fileURLWithPath()'はオプションではありません。関連するセクションでも同様の質問があります。 –

答えて

1

状態の右側(NSURL.fileURLWithPath(path))はオプションではないためです。この状態でif letの使用は適切ではありません。

+0

私は条件付きバインディングを削除する必要があります – Sam

+0

はいあなたは正しいです –

1

fileURL(withPath:)は常に新しいインスタンスを返すので、NSURLの作成を確認する必要はありません。

+0

私は何をしなければならないでしょうか? – Sam

+0

@ Samjhana条件チェックを外す –

1
let path = NSBundle.mainBundle().pathForResource("book", ofType: "pdf") 
    if(path) 
{ 
    let targetURL= URL(fileURLWithPath: path!) 
    docController = UIDocumentInteractionController(URL: targetURL) 
} 
+0

エラー。ファイルURLはNSURLで使用できません – Sam

+0

上記のコードを確認 –

2
  • NSURL(string:オプションを返します。
  • NSURL.fileURLWithPath:はありません。

なぜURL関連APIがNSBundleにありませんか?

if let targetURL = NSBundle.mainBundle().URLForResource("book", withExtension: "pdf") { 
    docController = UIDocumentInteractionController(URL: targetURL) 
    ... 
関連する問題