2012-12-10 16 views
31

benim NSData nesne alabilirim tüm bayt anda ancak bir NSLog için megs sayısını çalışıyorum bayt NSData Uzunluğu dönüştürmeknasıl ben bu <code>NSLog</code> deyimi böylece değiştirecek Yani</p> <pre><code>NSLog(@"%u", myData.length); </code></pre> <p>kullanarak megs

2.00 MB'lik

herhangi bir yardım mutluluk duyacağız gibi bir şey görebilirsiniz.

+0

Bunu nasıl biçimlendiririm, sonra ondan sonra iki ondalık basamakla görünür. – HurkNburkS

cevap

111

Bir kilobayt, 1024 bayt ve megabayt 1024 kilobayt, yani ...

NSLog(@"File size is : %.2f MB",(float)myData.length/1024.0f/1024.0f); 

Zihin Eğer, bu gerçekten düzgün 1.048.576 bayt aşağıda bayt boyutları barındırmak değil bir basit yaklaşımdır vardır veya 1,073,741,823 bayttan fazla. değişen dosya boyutlarını işleyebilir Daha kapsamlı bir koruma için bkz: ObjC/Cocoa class for converting size to human-readable string?

Veya Swift ise OS X 10.8+ ve iOS 6+

NSLog(@"%@", [[NSByteCountFormatter new] stringFromByteCount:data.length]); 

için:

Swift 3 için
print(ByteCountFormatter().string(fromByteCount: Int64(data.count))) 
+1

Cool, işe yarayan bir demet teşekkürler .. Kafamın parantez içinde olması gerektiğini düşünerek kafam karışıyordu ama bu mükemmel çalıştı! :) – HurkNburkS

+1

Bunu kullanıcıya göstermeniz gerekiyorsa, bir dize formatı kullanmayın. Bunun yerine, NSNumberFormatter kullanın. Bu, kullanıcının bulunduğu yer için biçimlendirir. – rmaddy

+0

hızlı ve el. yardımcı oldu – Alix

13

, mp:

let countBytes = ByteCountFormatter() 
countBytes.allowedUnits = [.useMB] 
countBytes.countStyle = .file 
let fileSize = countBytes.string(fromByteCount: Int64(dataToMeasure!.count)) 

print("File size: \(fileSize)") 
İlgili konular