代码之家  ›  专栏  ›  技术社区  ›  Marek H

如何使用本地化的NSProgress的AdditionalDescription显示“10个文件中的3个”

  •  1
  • Marek H  · 技术社区  · 6 月前

    我想利用 NSProgress localizedAdditionalDescription 但我无法计算出将其格式化为文件计数的组合。要么我没有得到任何后缀,要么我得到了字节。

    progress.kind: File
    
    Processing 15 files…
    5 bytes of 20 bytes
    
    progress.kind: None
    25 % completed
    5 of 20
    
    let progress = Progress(totalUnitCount: 20)
    progress.completedUnitCount = 5
    
    progress.setUserInfoObject(10, forKey: ProgressUserInfoKey.fileCompletedCountKey)
    progress.setUserInfoObject(15, forKey: ProgressUserInfoKey.fileTotalCountKey)
    
    print("progress.kind: File")
    progress.kind = .file
    print(progress.localizedDescription)
    print(progress.localizedAdditionalDescription)
    
    print("progress.kind: None")
    progress.kind = .none
    print(progress.localizedDescription)
    print(progress.localizedAdditionalDescription)
    

    enter image description here

    2 回复  |  直到 6 月前
        1
  •  1
  •   Kevin    6 月前

    totalUnitCount 必须为零,此外 kind 存在 .file ,以按文件获取进度。您可以设置 fileTotalCount fileCompletedCount 直接而不是通过用户信息对象。

    let progress = Progress()
    progress.kind = .file
    progress.fileCompletedCount = 5
    progress.fileTotalCount = 20
    print(progress.localizedAdditionalDescription)
    

    输出

    Optional("5 of 20 files")
    
        2
  •  1
  •   Marek H    6 月前

    获取此信息的关键是重置 NSProgressByteTotalCountKey NSProgressByteCompletedCountKey 到0

    progress.setUserInfoObject(0, forKey: ProgressUserInfoKey("NSProgressByteTotalCountKey"))
    progress.setUserInfoObject(0, forKey: ProgressUserInfoKey("NSProgressByteCompletedCountKey"))
    

    后果

    progress.kind: File
    Processing 15 files…
    10 of 15 files
    progress.kind: None
    25 % completed
    10 of 15 files
    

    奖金:如果您使用 NSProgressUseItemDescriptionKey 可以将文件更改为项目

    progress.setUserInfoObject(true, forKey: ProgressUserInfoKey("NSProgressUseItemDescriptionKey"))
    

    后果

    progress.kind: File
    Processing 15 items…
    10 of 15 items
    progress.kind: None
    25 % completed
    10 of 15 items