我要存储的数据对象的MongoDB:如何从MongoDB存储和检索Swift Data或NSData?
它使用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这种方法是从Web服务返回的JSON是一种不是Data的缓冲区,下面的Swift条件永远不会被执行。
if let dataString = dict["data"] as? Data{
问题是如何从Mongo中获取二进制数据并在Swift中使用它?
EDIT2:立足zaph的回答是: 所以数据都是__NSArrayI的元素的Int64(35) 我可以投的唯一方法是Array<AnyObject>
但我不能将其转换为给定的这种形式的数据。
它转换为这些尝试:
Array<Int64>
- [UINT64]
- [UINT8]
- [Int64类型]
- UnsafeRawPointer
失败。
if let a = dataDict["data"] as? Array<Int64>
提示:如果使用AES从公共的密码加密速度伴随着更快的规模。 – zaph
尝试'init(字节:UnsafeRawPointer,count:Int)'从字节创建一个'Data'对象。 – zaph
我如何得到UnsafeRawPointer?请检查更新的问题。 –