W Xcode 8 z Swift 3 beta 6 nie ma funkcji sizeof(). Ale jeśli chcesz, możesz zdefiniować dla swoich potrzeb. Dobrą wiadomością jest to, że ta nowa funkcja sizeof działa zgodnie z oczekiwaniami z twoją tablicą.
let bb: UInt8 = 1
let dd: Double = 1.23456
func sizeof <T> (_ : T.Type) -> Int
{
return (MemoryLayout<T>.size)
}
func sizeof <T> (_ : T) -> Int
{
return (MemoryLayout<T>.size)
}
func sizeof <T> (_ value : [T]) -> Int
{
return (MemoryLayout<T>.size * value.count)
}
sizeof(UInt8.self) // 1
sizeof(Bool.self) // 1
sizeof(Double.self) // 8
sizeof(dd) // 8
sizeof(bb) // 1
var testArray: [Int32] = [2000,400,5000,400]
var arrayLength = sizeof(testArray) // 16
Trzeba wszystkie wersje funkcji sizeof, aby uzyskać rozmiaru zmiennej i, aby uzyskać prawidłowy rozmiar typu danych i tablicy.
Jeśli zdefiniujesz tylko drugą funkcję, sizeof (UInt8.self) i sizeof (Bool.self) dadzą wynik "8". Jeśli zdefiniujesz tylko pierwsze dwie funkcje, sizeof (testArray) spowoduje "8".
Potrzebuję długość Array w bajtach. Twój kod nie kompiluje się. – Darx
@Darx: Zobacz zaktualizowaną odpowiedź. –
Dziękuję. Działa i jestem szczęśliwy. Zmarnowane 2 godziny ... ale tak czy inaczej teraz działa. :) – Darx