Staram się dowiedzieć, jak zmienić nazwę instancji podklasy UIDocument
w folderze iCloud. Próbowałem zapisać dokument z nowym adresem ...Zmienianie nazwy dokumentu UID w usłudze iCloud
func renameDocument(to name: String) {
let targetURL = document.fileURL.deletingLastPathComponent().appendingPathComponent(name)
.appendingPathExtension("<extension>")
document.save(to: targetURL, for: .forCreating) { success in
guard success else {
// This always fails
return
}
// Success
}
}
... ale to nie z ...
Error Domain=NSCocoaErrorDomain Code=513 "“<new-file-name>” couldn’t be moved because you don’t have permission to access “<folder>”."
UserInfo={NSSourceFilePathErrorKey=/private/var/mobile/Containers/Data/Application/1A9ACC2B-81EF-4EC9-940E-1C129BDB1914/tmp/(A Document Being Saved By My App)/<new-file-name>, NSUserStringVariant=( Move ), NSDestinationFilePath=/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/<folder>/<new-file-name>, NSFilePath=/private/var/mobile/Containers/Data/Application/1A9ACC2B-81EF-4EC9-940E-1C129BDB1914/tmp/(A Document Being Saved By My App)/<new-file-name>, NSUnderlyingError=0x1c4e54280 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}
... i tylko prosty ruch ...
func renameDocument(to name: String) {
let targetURL = document.fileURL.deletingLastPathComponent().appendingPathComponent(name)
.appendingPathExtension("<extension>")
do {
try FileManager.default.moveItem(at: document.fileURL, to: targetURL)
} catch {
// This always fails
}
// Success
}
... co nie powiedzie się w ith ...
Error Domain=NSCocoaErrorDomain Code=513 "“<old-file-name>” couldn’t be moved because you don’t have permission to access “<folder>”." UserInfo={NSSourceFilePathErrorKey=/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/<folder>/<old-file-name>, NSUserStringVariant=( Move ), NSDestinationFilePath=/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/<folder>/<new-file-name>, NSFilePath=/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/<folder>/<old-file-name>, NSUnderlyingError=0x1c4c4d8c0 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}
Obie te grzywny pracy dla plików lokalnych i zmiany nazw plików iCloud działa OK w widoku kontrolera UIDocumentBrowserViewController
korzeniowego.
Zgaduję, że w pewnym miejscu brakuje zezwolenia, które pozwala aplikacji pisać w folderach iCloud.
Dla informacji, Info.plist zawiera wszystkie następujące klucze ...
LSSupportsOpeningDocumentsInPlace
NSExtensionFileProviderSupportsEnumeration
UISupportsDocumentBrowser
Czy dokument jest otwarty, gdy trzeba zmienić jego nazwę? – theMikeSwan
Nie ma znaczenia, czy jest otwarta, czy zamknięta. –
Zobacz, https://developer.apple.com/documentation/foundation/filemanager/1413989-setubiquitous, czy to pomaga. Jestem pewien, że niektóre z normalnych metod zarządzania plikami nie działają w kontenerze iCloud (chociaż iOS 11 mógł zmienić pewne rzeczy ...) – theMikeSwan