web-dev-qa-db-ja.com

データのサイズ(メガバイト)をSwift 3.0で出力します

データ型の変数fileDataがあり、このサイズを印刷する方法を見つけるのに苦労しています。

過去のNSDataでは、長さを出力しましたが、このタイプでは長さを出力できませんでした。

Swift 3.0でデータのサイズを印刷する方法は?

26
user2512523

YourData.countを使用し、1024 * 1024で除算します。Alexandersの優れた提案を使用してください。

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

次の結果:

There were 28865563 bytes
formatted result: 28.9 MB
65
Mozahler

目的に合わせてサイズを出力することが目的の場合は、 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)
15
Alexander

Dataオブジェクトのcountを使用できますが、NSDataにはlengthを使用できます

9
abdullahselek

次のコードにファイルのURLを入力して、ファイルサイズをMB単位で取得します。これがお役に立てば幸いです。

let data = NSData(contentsOf: FILE URL)!
let fileSize = Double(data.length / 1048576) //Convert in to MB
print("File size in MB: ", fileSize)
3
AtulParmar

受け入れられた答えに従って、私は簡単な拡張機能を作成しました:

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

@ mozahler's answer から適応した文字列のサイズを取得するには

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

バイト数だけを表示したい場合は、データオブジェクトを直接印刷すると表示されます。

let dataObject = Data()
print("Size is \(dataObject)")

あなたに与えるべき:

Size is 0 bytes

言い換えると、 .countは、新しいSwift 3.2以降では必要ありません。

0
Dino Alves