私は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,
})
問題このアプローチでは、Webサービスから返されたJSONがDataではないバッファのタイプであり、以下のSwift条件は決して実行されません。
if let dataString = dict["data"] as? Data{
Mongoからバイナリデータを取得してSwiftで使用するにはどうすればよいですか?
EDIT2:zaphの回答に基づいて:私はキャストでき ので、データは要素のInt64(35)と__NSArrayIとして来る 唯一の方法は、Array<AnyObject>
にあるが、私はこのフォーム与えられたデータに変換することはできません。
にキャストする試み:
Array<Int64>
- [UInt64型]
- [UINT8]
- 【のInt64]
- UnsafeRawPointer
に失敗しました。 dataString
を想定し
if let a = dataDict["data"] as? Array<Int64>
ヒント:一般的な暗号のAESを使用している場合は、暗号化スピードマグニチュードはもっと速くなければならない。 – zaph
バイトから 'Data'オブジェクトを作成するには' init(bytes:UnsafeRawPointer、count:Int) 'を試してください。 – zaph
どうすればUnsafeRawPointerを入手できますか?更新された質問を確認してください。 –