如何从Icloud Swift上的文件中获取数据

时间:2016-10-12 22:17:12

标签: ios swift icloud

我正在创建一个从Icloud获取文件并将其转换为b64格式字符串的应用,但我遇到了问题:

我真的不知道如何从这个文件中获取数据。我认为从IClo​​ud导入的文件中可以轻松打开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()
                    }

                }

            }

        }
    }
}

如何获取文件内的内容?拜托,希望你能帮帮我

1 个答案:

答案 0 :(得分:0)

您的代码无效,因为您将错误的值传递给fileExistsAtPath:

将文件NSURL转换为文件字符串的正确方法是使用path()方法。

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

可能是url.path而不是url.path()。我不确定旧的Swift语法。在Swift 3中它将是:

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

一旦你知道它存在,那么加载文件的方法很多。这一切都取决于你需要做什么。但第一个要求是将文件从给定的url移动到应用程序沙箱中的某个位置。至少如果您需要该文件以便在下次使用您的应用程序时继续使用。如果您只需要查看此文件一次,则不需要执行此步骤。