Я хочу сохранить объект данных в MongoDB:Как хранить и извлекать данные Swift или NSData от MongoDB?
Он создан с использованием CryptoSwift
let bytes = dataString.utf8.map({$0})
let encrypted = try! ChaCha20(key: getAESP(), iv: "zzzzzzzzzzzzzz").encrypt(bytes)
let encryptedData = Data(bytes: encrypted)
и отправляется на сервер с помощью NSURLSession:
let postData = NSMutableData(data: "patient_id=\(patientID)".data(using: String.Encoding.utf8)!)
postData.append("&data=".data(using: String.Encoding.utf8)!)
postData.append(encryptedData)
let request = NSMutableURLRequest(url: NSURL(string: "\(url)api/patient/document")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
В моей схеме модели я описал данные как Буфер:
var DocumentSchema1 = new Schema({
created_at:Date,
created_by:String,
document_type:String,
document_name:String,
data: Buffer,
modifications: [
{
modified_by: String,
modified_at: Date,
data: Buffer
}
],
isDeleted: Boolean,
deleted_at: String,
deleted_by: String,
})
Проблема wi Этот подход заключается в том, что JSON, возвращаемый из веб-службы, является типом буфера, а не данными, а условие Swift ниже никогда не выполняется.
if let dataString = dict["data"] as? Data{
Вопрос в том, как вернуть двоичные данные из Монго и использовать их в Swift?
EDIT2: на основе ответа на zaph в: Так данные поступают в __NSArrayI с элементами Int64 (35) Единственный способ, которым я могу бросить это в Array<AnyObject>
, но я не могу преобразовать его в данных, приведенных в этом виде.
Попытки привести его к:
Array<Int64>
- [UInt64]
- [Uint8]
- [Int64]
- UnsafeRawPointer
не удалось.
if let a = dataDict["data"] as? Array<Int64>
Подсказка: Если вы используете AES от общего Crypto от скорости шифрования с порядком величины быстрее. – zaph
Попробуйте 'init (bytes: UnsafeRawPointer, count: Int)', чтобы создать объект Data из байтов. – zaph
Как я могу получить UnsafeRawPointer? Проверьте обновленный вопрос. –