2016-04-14 28 views
2

nasıl Swift buNSData uzak dur şamandıra değeri

float value = *(float *)[data bytes]; 

yazabilir bayt?

Teşekkürler. daki Amaç-C kodu olarak - - NSData nesneler konak bayt için bir kayan nokta değeri temsil (en azından) 4 byte olduğunu varsayar

cevap

2

karşılık gelen Swift kodu

let value = UnsafePointer<Float>(data.bytes).memory 

olup.

  • UnsafePointer<Float>(..)(float *) döküm karşılık gelir.
  • .memory dereferencing işlecine * karşılık gelir.

alternatif Sen benim günü kurtardı

var value : Float = 0 
data.getBytes(&value, length: sizeofValue(value)) 
+0

olduğunu !! Bir milyar teşekkürler. – masgar

+0

Merak etme, burada bilmemiz gereken herhangi bir bellek yönetimi sorunu var mı? Yoksa sayım buna dikkat edecek mi? –

+0

@MauryMarkowitz: Aklında ne tür bellek yönetimi sorunları var? Baytlar, * değerine * kopyalanırlar * ve 'struct Float', bir referans türü değil, bir değer türüdür. –