iCloudフォルダのUIDocument
サブクラスのインスタンスの名前を変更する方法を理解するのが難しいです。私は...新しいURLで文書を保存iCloudでのUIDocumentの名前変更
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
}
}
を試してみた...しかし、これは
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"}}
...と、単純な移動...
...で失敗します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
}
...が失敗するi番目...
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"}}
これらの両方は、ローカルファイルに対して正常に動作し、iCloudのファイルの名前を変更することはUIDocumentBrowserViewController
ルートビューコントローラでOK動作します。
私の推測によれば、アプリがiCloudフォルダに書き込むことができるように、どこかに不足している権限があります。
情報については、のInfo.plistは、以下のすべてのキーが含まれています...
LSSupportsOpeningDocumentsInPlace
NSExtensionFileProviderSupportsEnumeration
UISupportsDocumentBrowser
は、文書のオープンですか? – theMikeSwan
開いているか閉じていても違いはありません。 –
https://developer.apple.com/documentation/foundation/filemanager/1413989-setubiquitousをご覧ください。私は、通常のファイルマネージャメソッドのいくつかがiCloudコンテナで動作しないと確信しています(ただし、iOS 11はものを変更している可能性があります...) – theMikeSwan