2017-08-27 64 views
5

Moja aplikacja tworzy plik pdf, a ja chcę zapisać ten dokument PDF na iCloud Drive programowo za pomocą Swift 3.Jak zapisać dokument pdf do iCloud Drive programowo za pomocą Swift?

Dla przykładu, tutaj użyłem pliku tekstowego do zapisania na dysku iCloud.

To jest mój kod:

func copyDocumentsToiCloudDrive() { 
    var error: NSError? 
    let iCloudDocumentsURL = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("myCloudTest") 

    do{ 
     //is iCloud working? 
     if iCloudDocumentsURL != nil { 
      //Create the Directory if it doesn't exist 
      if (!FileManager.default.fileExists(atPath: iCloudDocumentsURL!.path, isDirectory: nil)) { 
       //This gets skipped after initial run saying directory exists, but still don't see it on iCloud 
       try FileManager.default.createDirectory(at: iCloudDocumentsURL!, withIntermediateDirectories: true, attributes: nil) 
      } 
     } else { 
      print("iCloud is NOT working!") 
      // return 
     } 

     if error != nil { 
      print("Error creating iCloud DIR") 
     } 

     //Set up directorys 
     let localDocumentsURL = FileManager.default.urls(for: FileManager.SearchPathDirectory.documentDirectory, in: .userDomainMask).last! as NSURL 

     //Add txt file to my local folder 
     let myTextString = NSString(string: "HELLO WORLD") 
     let myLocalFile = localDocumentsURL.appendingPathComponent("myTextFile.txt") 
     _ = try myTextString.write(to: myLocalFile!, atomically: true, encoding: String.Encoding.utf8.rawValue) 

     if ((error) != nil){ 
      print("Error saving to local DIR") 
     } 

     //If file exists on iCloud remove it 
     var isDir:ObjCBool = false 
     if (FileManager.default.fileExists(atPath: iCloudDocumentsURL!.path, isDirectory: &isDir)) { 
      try FileManager.default.removeItem(at: iCloudDocumentsURL!) 
     } 

     //copy from my local to iCloud 
     if error == nil { 
      try FileManager.default.copyItem(at: localDocumentsURL as URL, to: iCloudDocumentsURL!) 
     } 
    } 
    catch{ 
     print("Error creating a file") 
    } 

} 

Ten kod działa bez żadnych błędów. Ale nie pokazuje zapisanego pliku na dysku iCloud.

Odwołuję się do tego link i napisałem ten kod.

+0

Otrzymałem wynik .. !! Miałem ten sam problem. Folder tworzy, ale brakuje pliku wewnątrz. Czy możesz mnie prowadzić? –

Odpowiedz

0

Zakładając, że kod działa zgodnie z założeniami, spróbuj zaktualizować wersję i numer kompilacji aplikacji w pliku info.plist. Zmiana tych wartości jest konieczna, aby zmiany w programie iCloud zostały odzwierciedlone.