2012-12-10 2 views
31

NSData 객체가 내가 할 수있는 모든 바이트 현재 그러나입니다 NSLog에 메가의 수를 시도하고 바이트에서있는 NSData 길이로 변환어떻게 내가이 <code>NSLog</code> 문을 이렇게 바꿀 것 그래서</p> <pre><code>NSLog(@"%u", myData.length); </code></pre> <p>을 사용하여 메가

2.00 megs

어떤 도움을 받으실 수 있습니다.

+0

어떻게하면 소수점 이하 두 자리로 나타나는지 서식을 지정합니다. – HurkNburkS

답변

111

킬로바이트 1024 바이트 메가 바이트에서 1,024 킬로바이트 그래서 ...

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

마음은 당신이 정말 제대로 1,048,576 바이트 이하 바이트 크기에 수용 할 수있는 단순한 접근 방식이 있습니다 1,073,741,823 바이트 이상이다. 다양한 파일 크기를 처리 할 수있는보다 완벽한 솔루션은 다음을 참조하십시오 ObjC/Cocoa class for converting size to human-readable string?

또는 스위프트에서 OS X 10.8+ 및 iOS 6+

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

를 들어 :

스위프트 3
print(ByteCountFormatter().string(fromByteCount: Int64(data.count))) 
+1

멋지다, 고마워. .. 나는 괄호 등이 있어야한다는 생각이 혼란스러워졌다. 그러나 이것은 완벽하게 작동했다! :) – HurkNburkS

+1

이것을 사용자에게 표시해야하는 경우 문자열 형식을 사용하지 마십시오. 대신 NSNumberFormatter를 사용하십시오. 이렇게하면 사용자 로케일의 형식이 지정됩니다. – rmaddy

+0

빠르고 손으로. 도움이되었다. – Alix

13

, in Mb :

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

print("File size: \(fileSize)") 
관련 문제