私はNSLog
私のNSData
オブジェクトのメグの数をしようとしていますが、現在入手できるのは、
NSLog(@"%u", myData.length);
それで、このNSLog
ステートメントをどのように変更して、
2.00メガ
任意の助けをいただければ幸いです。
キロバイトには1024バイト、メガバイトには1024キロバイトがあるため、...
NSLog(@"File size is : %.2f MB",(float)myData.length/1024.0f/1024.0f);
念のため、これは単純なアプローチであり、1,048,576バイト未満または1,073,741,823バイトを超えるバイトサイズに適切に対応できませんでした。さまざまなファイルサイズを処理できるより完全なソリューションについては、以下を参照してください。 サイズを人間が読み取れる文字列に変換するためのObjC/Cocoaクラス?
または、OS X 10.8+およびiOS 6+の場合
NSLog(@"%@", [[NSByteCountFormatter new] stringFromByteCount:data.length]);
Swiftの場合:
print(ByteCountFormatter().string(fromByteCount: Int64(data.count)))
Swift 3、in Mb:
let countBytes = ByteCountFormatter()
countBytes.allowedUnits = [.useMB]
countBytes.countStyle = .file
let fileSize = countBytes.string(fromByteCount: Int64(dataToMeasure!.count))
print("File size: \(fileSize)")
Swift 5.1およびiOS 13では、次の5つの方法のいずれかを使用して問題を解決できます。
ByteCountFormatter
の- string(fromByteCount:countStyle:)
クラスメソッドの使用次のサンプルコードは、バイトサイズをより適切なストレージユニット(メガバイトなど)に変換することでautomaticallyでファイルサイズを印刷するためにstring(fromByteCount:countStyle:)
を実装する方法を示しています。
_import Foundation
let url = Bundle.main.url(forResource: "image", withExtension: "png")!
let data = try! Data(contentsOf: url)
let byteCount = data.count
print(byteCount) // prints: 2636725
let displaySize = ByteCountFormatter.string(fromByteCount: Int64(byteCount), countStyle: .file)
print(displaySize) // prints: 2.6 MB
_
ByteCountFormatter
の- string(fromByteCount:)
メソッドを使用する次のサンプルコードは、ByteCountFormatter
のstring(fromByteCount:)
を実装して、manuallyバイトをメガバイトに変換することでファイルサイズを出力する方法を示しています。
_import Foundation
let url = Bundle.main.url(forResource: "image", withExtension: "png")!
let data = try! Data(contentsOf: url)
let byteCount = data.count
print(byteCount) // prints: 2636725
let formatter = ByteCountFormatter()
formatter.allowedUnits = [.useMB]
formatter.countStyle = .file
let displaySize = formatter.string(fromByteCount: Int64(byteCount))
print(displaySize) // prints: 2.6 MB
_
ByteCountFormatter
の- string(from:countStyle:)
クラスメソッドとMeasurement
の使用次のサンプルコードは、バイトサイズをより適切なストレージユニット(メガバイトなど)に変換することでautomaticallyでファイルサイズを印刷するためにstring(from:countStyle:)
を実装する方法を示しています。
_import Foundation
let url = Bundle.main.url(forResource: "image", withExtension: "png")!
let data = try! Data(contentsOf: url)
let byteCount = data.count
print(byteCount) // prints: 2636725
let byteSize = Measurement(value: Double(byteCount), unit: UnitInformationStorage.bytes)
let displaySize = ByteCountFormatter.string(from: byteSize, countStyle: .file)
print(displaySize) // prints: 2.6 MB
_
ByteCountFormatter
の- string(from:)
メソッドとMeasurement
の使用次のサンプルコードは、手動バイトをメガバイトに変換することでファイルサイズを出力するために、ByteCountFormatter
のstring(from:)
およびMeasurement
を実装する方法を示しています。
_import Foundation
let url = Bundle.main.url(forResource: "image", withExtension: "png")!
let data = try! Data(contentsOf: url)
let byteCount = data.count
print(byteCount) // prints: 2636725
let byteSize = Measurement(value: Double(byteCount), unit: UnitInformationStorage.bytes)
let formatter = ByteCountFormatter()
formatter.allowedUnits = [.useMB]
formatter.countStyle = .file
let displaySize = formatter.string(from: byteSize)
print(displaySize) // prints: 2.6 MB
_
MeasurementFormatter
の- string(from:)
メソッドとMeasurement
の使用次のサンプルコードは、Measurement
とMeasurementFormatter
のstring(from:)
を実装して、manuallyバイトをメガバイトに変換することでファイルサイズを出力する方法を示しています。
_import Foundation
let url = Bundle.main.url(forResource: "image", withExtension: "png")!
let data = try! Data(contentsOf: url)
let byteCount = data.count
print(byteCount) // prints: 2636725
let byteSize = Measurement(value: Double(byteCount), unit: UnitInformationStorage.bytes)
let convertedSize = byteSize.converted(to: .megabytes)
let formatter = MeasurementFormatter()
let displaySize = formatter.string(from: convertedSize)
print(displaySize) // prints: 2.637 MB
_