我已经尝试了两天多的时间来写一个文件到iCloud驱动器.我已经尝试直接编写一个简单的文本文件,然后在本地移动它,使用UIDocumentMenuViewController等.我没有得到任何错误的代码和单步调试,它看起来成功,但当我检查文件是否存在或至少iCloud目录,那里什么都没有.我尝试了模拟器和我的iPhone,触发iCloud同步,以及我能想到的其他一切.
我的主要目标是简单地将文本文件写入iCloud驱动器,后来将成为“数字”文件
我已经设置了我的plist文件和我的权利:
<key>NSUbiquitousContainers</key> <dict> <key>iCloud.com.paul.c.$(PRODUCT_NAME:rfc1034identifier)</key> <dict> <key>NSUbiquitousContainerIsDocumentScopePublic</key> <true/> <key>NSUbiquitousContainerName</key> <string>myCloudTest</string> <key>NSUbiquitousContainerSupportedFolderLevels</key> <string>Any</string> </dict> </dict>
我还提到了捆绑版本,如下所述:Save iOS 8 Documents to iCloud Drive
我已经尝试了几十个没有运气的教程.我的最新代码基于此示例:https://medium.com/ios-os-x-development/icloud-drive-documents-1a46b5706fe1
这是我的代码:
@IBAction func ExportFile(sender: AnyObject) { var error:NSError? let iCloudDocumentsURL = NSFileManager.defaultManager().URLForUbiquityContainerIdentifier(nil)?.URLByAppendingPathComponent("myCloudTest") //is iCloud working? if iCloudDocumentsURL != nil { //Create the Directory if it doesn't exist if (!NSFileManager.defaultManager().fileExistsAtPath(iCloudDocumentsURL!.path!,isDirectory: nil)) { //This gets skipped after initial run saying directory exists,but still don't see it on iCloud NSFileManager.defaultManager().createDirectoryAtURL(iCloudDocumentsURL!,withIntermediateDirectories: true,attributes: nil,error: nil) } } else { println("iCloud is NOT working!") // return } if ((error) != nil) { println("Error creating iCloud DIR") } //Set up directorys let localDocumentsURL = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.DocumentDirectory,inDomains: .UserDomainMask).last as! NSURL //Add txt file to my local folder let myTextString = NSString(string: "HELLO WORLD") let myLocalFile = localDocumentsURL.URLByAppendingPathComponent("myTextFile.txt") let written = myTextString.writeToURL(myLocalFile,atomically: true,encoding: NSUTF8StringEncoding,error: &error) if ((error) != nil){ println("Error saving to local DIR") } //If file exists on iCloud remove it var isDir:ObjCBool = false if (NSFileManager.defaultManager().fileExistsAtPath(iCloudDocumentsURL!.path!,isDirectory: &isDir)) { NSFileManager.defaultManager().removeItemAtURL(iCloudDocumentsURL!,error: &error) } //copy from my local to iCloud if (error == nil && !NSFileManager.defaultManager().copyItemAtURL(localDocumentsURL,toURL: iCloudDocumentsURL!,error: &error)) { println(error?.localizedDescription); }
感谢您抽出宝贵时间.
干杯,
保罗
var error:NSError? let iCloudDocumentsURL = NSFileManager.defaultManager().URLForUbiquityContainerIdentifier(nil) //?.URLByAppendingPathComponent("myCloudTest") var fileManager: NSFileManager = NSFileManager() var fileList: NSArray = fileManager.contentsOfDirectoryAtURL(iCloudDocumentsURL!,includingPropertiesForKeys: nil,options: nil,error: &error)! var filesStr: NSMutableString = NSMutableString(string: "Files in iCloud folder \n") for s in fileList { println(s) }
它打印出我的文本文件的路径:
file:/// private / var / mobile / Library / Mobile Documents / iCloud~com~paul~c~myApp / MyTextFile.txt
我的文件在那里,我在iCloud驱动器上看不到它.
我有这个问题.我
followed the advice here和我发现我的Info.plist键不正确.一旦我将其更改为iCloud.MY_BUNDLE_IDENTIFIER(即从Info.plist中更高的CFBundleIdentifier键复制字符串),它就开始工作了.