ios - 使用自定义格式化程序应用字符串后缀
问题描述
使用Swift
'sFormatter
类时,可以选择格式样式(能量、长度、质量等),该样式将显示在字段的末尾,如下例所示:
我正在使用Eureka框架构建一个表单并尝试达到相同的效果,但将“cal”后缀替换为“hours”。
所以最终的结果应该是“10小时”。
我正在使用IntRow
仅接受 Int 值的 Eureka。
经过一番搜索,我设法找到了一种方法来使用自定义格式化程序来实现这一点,该格式化程序可以分配给IntRow
,但它并没有完全工作。当我尝试更改字段的值时,该字段变为空且没有值。
自定义格式化程序代码:
class NumberSuffixFormatter: Formatter {
var suffix: String!
init(suffix: String = "") {
self.suffix = suffix
super.init()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func string(for obj: Any?) -> String? {
if let intValue = obj as? Int {
return "\(intValue) hours"
}
return nil
}
override func getObjectValue(_ obj: AutoreleasingUnsafeMutablePointer<AnyObject?>?, for string: String, errorDescription error: AutoreleasingUnsafeMutablePointer<NSString?>?) -> Bool {
obj?.pointee = string as AnyObject
return true
}
}
IntRow
代码:
<<< IntRow() {
let formatter = NumberSuffixFormatter(suffix: " hours")
$0.value = 10
$0.formatter = formatter
$0.useFormatterDuringInput = true
}
解决方案
推荐阅读
- c# - 读取 Azure 密钥保管库会引发异常:System.ExecutionEngineException:“引发了‘System.ExecutionEngineException’类型的异常。”
- haskell - 通过haskell元编程提取用于跟踪/记录的上下文
- java - 覆盖 @Where JPA 注释
- arrays - 重新排列数组 A,以便在一对一比较时 A 赢得与数组 B 的最大比较次数
- powershell - PowerShell - Visual Studio Code - 如何在长结果中禁用“更多”?
- c++ - 水平输出 C++
- html - 未定义的函数 static_path/2 在