web-dev-qa-db-ja.com

iCloudドライブの問題:「[DocumentManager]選択したURLのサムネイルを関連付けることができませんでした」

複数のプロパティを含むオブジェクトからJSON文字列ファイルを作成しました。これはオブジェクトです:

RecipeFile : Codable {
  var name: String
  var theRecipeIngredients: [String]
  var theRecipeSteps: [String]
  var theRecipeRating: Int
  var theRecipeCategory: String
  var theRecipeIndexStrings: String
  var theRecipeImage: String?

このコードでJSON文字列ファイルを作成します。

let json_encoder = JSONEncoder()
let recipeFileName = recipeToDisplay.name! + UUID().uuidString + ".json"
let exportFilePath = getDocumentsDirectory().appendingPathComponent(recipeFileName)
do {
   let jsonData = try json_encoder.encode(exportRecipeFile)
   if let jsonString = String(data: jsonData, encoding: .utf8)
      {
         try jsonString.write(to: exportFilePath, atomically: false, encoding: .utf8)
      }
   } catch {
      print(error.localizedDescription)
   }

ICloudドライブにアップロードします。 UIDocumentPickerViewControllerを使用してiCloudドライブから文字列ファイルをインポートします。インポートしたファイルを問題なく解析できます。ただし、func documentPicker(_ controller:UIDocumentPickerViewController、didPickDocumentsAt urls:[URL])が呼び出されると、xCodeデバッグ領域にこのメッセージ(一部のパス情報を削除するように編集)が表示されます。

[DocumentManager]選択したURLファイルのサムネイルの関連付けに失敗しました:/// .... Bourbon%20Chocolate%20Walnut%20Pie18D20181-DAFD-499C-9873-7D3E0794C37A.jsonを受信ボックスのコピーファイル:///....Bourbonに関連付けることができませんでした%20Chocolate%20Walnut%20Pie18D20181-DAFD-499C-9873-7D3E0794C37A.json:Error Domain = QLThumbnail Code = 2 "(null)" UserInfo = {NSUnderlyingError = 0x149a042b0 {Error Domain = GSLibraryErrorDomain Code = 3 "Generation not found" UserInfo = {NSDescription =世代が見つかりません}}}

これが生成される原因は何ですか?

DidPickDocumentsAtコードは次のように始まります。

    let data = try? Data(contentsOf: urls[0]) as Data
    let json_decoder = JSONDecoder()
    do {
        let importRecipeFile = try json_decoder.decode(RecipeFile.self, from: data!)
        let importedRecipeToSave = Recipe(context: theMOC)
        importedRecipeToSave.name = importRecipeFile.name
        importedRecipeToSave.category = importRecipeFile.theRecipeCategory
        importedRecipeToSave.rating = Int16(importRecipeFile.theRecipeRating)
        importedRecipeToSave.terms = importRecipeFile.theRecipeIndexStrings
        importedRecipeToSave.addedToGroceryList = false
5
Diskprotek

このメッセージは無視することができます。 iCloudからファイルをインポートすると、iOSはサムネイルをiCloudからインポートされたコピーにコピーしようとしますが、JSONファイルの場合、コピーするサムネイルがなく、これをログに記録します。これはあなたの側でエラーではありません。

3
Thomas Deniau

親ViewControllerに子ViewControllerとして追加する前に、別のUIViewControllerからUIDocumentPickerを提示したときに、この問題が発生しました。

0
Tobe