2016-06-29 22 views
12

içinde aşağıdaki kod çalıştırmak için çalıştık hızlı 3Swift 3 değişiklik

var values = [UInt8](count:data!.length, repeatedValue:0) 
data!.getBytes(&values, length:data!.length) 
veri 'Data' veri türüdür

(NSData ani göre 3 kılavuzlar 'Data' için değişim)

Yukarıdaki kodu Swift 3'te çalıştıramıyorum. Derleyici, "Argument Repeated değerinin argümandan önce gelmesi gerektiği" hatası veriyor. Aynı kod, Swift 2.2

'da çalışıyordu. Çözüm ne olacak?

var values = [UInt8](repeating:0, count:data!.length) 
data.getBytes(&values, length: data!.length) 

Verileri için:

+0

Soru biraz farklı olsa da, cevap aynı olmalıdır: http://stackoverflow.com/questions/38090320/writing-data-to-an-nsoutputstream-in-swift-3 – Desdenova

cevap

15

argümanlar NSData için Swift 3.

tersine dönmüştür sipariş demektir

var values = [UInt8](repeating:0, count:data!.count) 
data.copyBytes(to: &values, count: data!.count) 
+1

Bu bir Swift 3'ün erken sürümü. Mevcut Swift 3 ve Swift 4 için @ svd'nin cevabını kullanmalısınız. – Moritz

26

swift3 sadece kullanmak için aşağıdakileri yapın:

let array = [UInt8](yourDataObject) 

Bu ' Hepsi millet!)

+0

Bunu nasıl kullanıyorsunuz? Aşağıdakileri Objective-C'den dönüştürmeye çalışıyorum: int16_t \t \t = 0; CGFloat sonucu = NAN; (tempCharacteristic) { [[tempCharacteristic value] getBytes: & value length: sizeof (value)]; sonuç = (CGFloat) değeri/10.0f; } // tempCharacteristic bir CBCharacteristic olduğunu – Surz

+0

Korkarım ama istenen sonuca ulaşmak için birkaç adım atmanız gerekiyor. Ne yazık ki CB ile çok fazla deneyimim yok ama Int16 değerine ihtiyacın olduğunu görüyorum ve Float'ı elde etmek için bölmek yerine. Benim bakış açımdan aşağıdakilere ulaşabilirsiniz: let bytes = [UInt8] (tempCharacteristic.value); let pointer = UnsafePointer (bayt); let fPointer = pointer.withMemoryRebound (için: Int16.self, kapasite: 2) { dönmek 0 }; let value = Int16 (fPointer.pointee); Bu yardımcı olur umarım. (Tabii ki tüm noktalı virgülleri kaldırın;)) – sVd

+0

İşaretçiniz için çok teşekkürler, @sVd. Snippet'i dönüştürme konusunda hala sorun yaşıyorum - sorumu kontrol edermisiniz? https://stackoverflow.com/questions/45287488/trouble-converting-nsdata-objective-c-code-to-swift – Surz