Swift: доступ к 1220 вершинам грани и сохранение вершин из грани AR - PullRequest
1 голос
/ 25 мая 2020

Я пытаюсь получить данные о 1220 вершинах и сохранить их в файл iPhone. Проблема, с которой я столкнулся, заключается в том, что мне не удалось получить захваченные данные и правильно записать их в структуру JSON.

У меня есть:

struct CaptureData {
    var vertices: [SIMD3<Float>]


      var verticesFormatted : String {
            let v = "<" + vertices.map{ "\($0.x):\($0.y):\($0.z)" }.joined(separator: "~") + "~t:\(String(Double(Date().timeIntervalSince1970)))>"
            return "\(v)"
        }

    var jsonDict:Dictionary<String, Any> = [
           "facetracking_data" : "1",
           "info" : [
               "frame" : "0",
               "timestamp" : 12345,
               "vertices" : [
                   "x" : "0.1",
                   "y" : "0.2",
                   "z" : "0.3"
               ]
           ]
       ]

    var jsonData : Data {
        let data = try! JSONSerialization.data(withJSONObject: jsonDict, options: .prettyPrinted)
        return data
    }

}

Мне удалось распечатать некоторые данные, используя print (данные), например:

SIMD3 (0,018364782, -0,043627884, 0,0480636), SIMD3 (-0,01794959, -0,04421088, 0,04891427), SIMD3 (-0,019180747, -0,0457206996, 0,04) jsonDict: [«facetracking_data»: «1», «info»: [«frame»: «0», «timestamp»: 1590426140.3919969, «vertices»: [«x»: «0,1», «y»: «0,2» , "z": "0.3"]]])

Я пытаюсь записать захваченные данные и сохранить их в формате JSON, нажав одну кнопку:

@IBAction func saveButtonTapped(_ sender: UIButton) {
     guard let data = getFrameData() else {return}

                      let jsonDataString = String(decoding: data.jsonData, as: UTF8.self)
                      let file = "\(UUID().uuidString).txt"
                      let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
                      let fileURL = dir.appendingPathComponent(file)
                      do {

                          try data.write(to: fileURL, atomically: false, encoding: .utf8)
                        print(data)
                      }
                      catch {
                          print("Error: \(error)")
                      }
    }

Мне не удалось попробовать data.write (to: fileURL, atomically: false, encoding: .utf8), чтобы это работало, поскольку оно возвращает ошибку ('data' не имеет члена 'write'), и я не совсем уверен, как чтобы получить захваченные данные и записать их в мою определенную структуру JSON ...

...