我正在创建一个从Icloud获取文件并将其转换为b64格式字符串的应用,但我遇到了问题:
我真的不知道如何从这个文件中获取数据。我认为从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()
}
}
}
}
}
}
如何获取文件内的内容?拜托,希望你能帮帮我
答案 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
移动到应用程序沙箱中的某个位置。至少如果您需要该文件以便在下次使用您的应用程序时继续使用。如果您只需要查看此文件一次,则不需要执行此步骤。