2016-10-12 7 views
3

私はiCloud上からファイルを取得し、B64のフォーマット文字列に変換アプリを作成していますが、私は問題を抱えている:のiCloudスウィフト上のファイルからデータを取得する方法

私は本当に知りませんこのファイルからデータを取得する方法。私はそれがICloudからインポートされたファイルからPathを簡単に開くことができると思ったが、ルートにアクセスしようとするとnilを返す。

私のコード例は、私が一時的なルートを持っています:((file:///.../Aplication/xxx-xxx-xxx-xx/temp/com.domain.AppName/Carolina) .CER):。

extension KeyViewController: UIDocumentMenuDelegate { 

    func documentMenu(documentMenu: UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewController) { 
     documentPicker.delegate = self 
     print ("documentMenu") 
     self.presentViewController(documentPicker, animated: true, completion: nil) 
    } 
} 
extension KeyViewController: UIDocumentPickerDelegate { 

func documentPicker(controller: UIDocumentPickerViewController, didPickDocumentAtURL url: NSURL) { 
    print("url string") 
    print(String(url)) 
//prints file:///.../Aplication/xxx-xxx-xxx-xx/temp/com.domain.AppName/Carolina.cer 

if controller.documentPickerMode == UIDocumentPickerMode.Import { 
      if (NSFileManager.defaultManager().fileExistsAtPath(String(url))){ 
        print("exists") 
      } 
      else{ 
        print("not exists") 
      } 
     dispatch_async(dispatch_get_main_queue()) { 
      if let fileName = url.lastPathComponent { 
       var fileNameArray = fileName.componentsSeparatedByString(".") 
       print ("fileNameArray") 
       print (fileNameArray) 
       if ((fileNameArray[1] != "cer") && (fileNameArray[1] != "key")) { 
        self.alertMessage = "Not a valid selection, choose .cer or .key Files" 
        self.showAlertMessage(self.alertMessage) 
       } 
       else{ 
       //saving the name 
        if (fileNameArray[1]=="cer") 
        { 
NSUserDefaults.standardUserDefaults().setObject(fileName, forKey: "temporalCerFile") 
        } 
        else{ 
        //saving the name 
NSUserDefaults.standardUserDefaults().setObject(fileName, forKey: "temporalKeyFile") 
        } 
NSUserDefaults.standardUserDefaults().synchronize() 
        } 

       } 

      } 

     } 
    } 
} 

どのように私はあなたがfileExistsAtPath:に不正な値を渡しているので、あなたのコードが動作していない

+0

指定されたURLでファイルにアクセスしようとしたところはどこですか?投稿したコードは、URLを印刷してURLのファイル名を分割しますが、実際にはURLのファイルにアクセスしようとしません。 – rmaddy

+0

編集済み、申し訳ありません。その部分を貼り付けるのを忘れました。ありがとう –

+0

投稿した更新されたコードはまだファイルにアクセスしようとしません。あなたが今までに持っているのは、それが存在するかどうかを確認することだけです。そしてあなたが投稿したコードは 'NSURL'を' String'を期待するメソッドに渡そうとしているので、コンパイルされません。 – rmaddy

答えて

0

私を助けることを願って、?。ファイル内のコンテンツをして下さい得ることができます

ファイルNSURLをファイル文字列に変換する適切な方法は、path()方法。

if (NSFileManager.defaultManager().fileExistsAtPath(url.path())) { 

url.path()ではなくurl.pathである可能性があります。私は古いSwift構文についてはわかりません。 Swift 3では、次のようになります。

if FileManager.default.fileExists(atPath: url.path) { 

それが存在することがわかったら、それはファイルをロードする多くの方法です。それはあなたが何をする必要があるかによって異なります。しかし、最初の要件は、指定されたurlからアプリのサンドボックス内の場所にファイルを移動することです。少なくともあなたのアプリケーションの次の使用を生き残るためにファイルが必要な場合。この一度だけファイルを見るだけであれば、このステップは必要ありません。

関連する問題