webentwicklung-frage-antwort-db.com.de

Drucken Sie die Größe (Megabyte) der Daten in Swift 3.0

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?

14
user2512523

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
43
Mozahler

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)
14
Alexander

Sie können count des Datenobjekts und length für NSData verwenden

6
abdullahselek

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))
 }}
2
Jovan Stankovic

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)")
}
1
spnkr

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)
0
AtulParmar

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.

0
Dino Alves