如何从 Icloud Swift 上的文件中获取数据
Posted
技术标签:
【中文标题】如何从 Icloud Swift 上的文件中获取数据【英文标题】:How to get the data from file on Icloud Swift 【发布时间】:2016-10-12 22:17:12 【问题描述】:我正在创建一个从 Icloud 获取文件并将其转换为 b64 格式字符串的应用程序,但我遇到了一个问题:
我真的不知道如何从这个文件中获取数据。我认为从 ICloud 导入的文件中打开路径可能很容易,但是当我尝试访问路由时它返回 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()
如何获取文件中的内容?拜托,希望你能帮助我
【问题讨论】:
您在哪里尝试访问给定 URL 的文件?您发布的代码会打印 URL 并拆分 URL 的文件名,但它不会尝试实际访问 URL 处的文件。 已编辑,抱歉我忘记粘贴那部分了。谢谢 您发布的更新代码仍然没有尝试访问该文件。到目前为止,您所拥有的只是检查它是否存在。而且您发布的代码甚至无法编译,因为您试图将NSURL
传递给需要 String
的方法。
这就是我真的不知道如何访问文件的关键(我从ios开始),所以我尝试先访问路径(如果存在)但它没有。如果该路径存在,我想我必须使用 let document = File.open(path) ,然后使用类似 while var line = document.readline()
试试这个解决方案***.com/a/50397424/2171764
【参考方案1】:
您的代码不起作用,因为您将错误的值传递给 fileExistsAtPath:
。
将文件NSURL
转换为文件字符串的正确方法是使用path()
方法。
if (NSFileManager.defaultManager().fileExistsAtPath(url.path()))
可能是url.path
而不是url.path()
。我不确定旧的 Swift 语法。在 Swift 3 中它将是:
if FileManager.default.fileExists(atPath: url.path)
一旦你知道它存在,加载文件的方法有很多种。这一切都取决于你需要用它做什么。但第一个要求是将文件从给定的url
移动到应用程序沙箱内的某个位置。至少如果您需要该文件在下次使用您的应用程序时仍然存在。如果只需要看一次文件,则不需要这一步。
【讨论】:
以上是关于如何从 Icloud Swift 上的文件中获取数据的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 如何让所有照片的相册都包含 iCloud Library?
如何使用 Cloudkit 快速从 iCloud 获取当前用户信息