Ich habe eine variable fileData vom Datentyp und ich finde es schwer zu finden, wie ich die Größe dieses Datentyps drucken kann.
In früheren NSData würden Sie die Länge drucken, aber dies ist bei diesem Typ nicht möglich.
Wie drucke ich die Datengröße in Swift 3.0?
Verwenden Sie yourData.count und teilen Sie es durch 1024 * 1024. Verwenden Sie Alexanders hervorragenden Vorschlag:
func stackOverflowAnswer() {
if let data = UIImagePNGRepresentation(#imageLiteral(resourceName: "VanGogh.jpg")) as Data? {
print("There were \(data.count) bytes")
let bcf = ByteCountFormatter()
bcf.allowedUnits = [.useMB] // optional: restricts the units to MB only
bcf.countStyle = .file
let string = bcf.string(fromByteCount: Int64(data.count))
print("formatted result: \(string)")
}
}
Mit folgenden Ergebnissen:
There were 28865563 bytes
formatted result: 28.9 MB
Wenn Sie die gewünschte Größe drucken möchten, verwenden Sie ByteCountFormatter
import Foundation
let byteCount = 512_000 // replace with data.count
let bcf = ByteCountFormatter()
bcf.allowedUnits = [.useMB] // optional: restricts the units to MB only
bcf.countStyle = .file
let string = bcf.string(fromByteCount: Int64(byteCount))
print(string)
Sie können count
des Datenobjekts und length
für NSData verwenden
Folgende akzeptierte Antwort habe ich einfache Erweiterung erstellt:
extension Data {
func sizeString(units: ByteCountFormatter.Units = [.useAll], countStyle: ByteCountFormatter.CountStyle = .file) -> String {
let bcf = ByteCountFormatter()
bcf.allowedUnits = units
bcf.countStyle = .file
return bcf.string(fromByteCount: Int64(count))
}}
Um die Größe einer Zeichenkette zu erhalten, wird diese aus @ mozahlers Antwort angepasst
if let data = "some string".data(using: .utf8)! {
print("There were \(data.count) bytes")
let bcf = ByteCountFormatter()
bcf.allowedUnits = [.useKB] // optional: restricts the units to MB only
bcf.countStyle = .file
let string = bcf.string(fromByteCount: Int64(data.count))
print("formatted result: \(string)")
}
Geben Sie Ihre Datei-URL in den folgenden Code ein, um die Dateigröße in MB zu erhalten.
let data = NSData(contentsOf: FILE URL)!
let fileSize = Double(data.length / 1048576) //Convert in to MB
print("File size in MB: ", fileSize)
Wenn Sie nur die Anzahl der Bytes sehen möchten, können Sie dies durch Drucken des Datenobjekts direkt erhalten.
let dataObject = Data()
print("Size is \(dataObject)")
Sollte dir geben:
Size is 0 bytes
Mit anderen Worten, .count
ist in neueren Swift 3.2 oder höher nicht erforderlich.