HandyJSON
HandyJSON copied to clipboard
用string 接收longInt时iOS 15 精度转换不准
一样遇到了,后台返回long类型,客户端String类型接收,在iOS15上精度丢失了。。。
I have a long int type id 234782649242226688,parse to string result is 234782649242226000 in iOS 15
我也是这样子,搞得一些功能都用不了,只能用Int64去接收
BuiltInBasicType.swift 修改下这块
So did I
number.stringValue是会有问题的,例如 589.68
后来解决了吗?
Podfile添加如下文本替换方法,其实就是BuiltInBasicType.swift中,formatter.maximumFractionDigits = 16这行改成10.
#iOS 15 NumberFormatter number 转 string 丢失精度问题, post_install do |installer| find_and_replace("Pods/HandyJSON/Source/BuiltInBasicType.swift", "formatter.maximumFractionDigits = 16", "formatter.maximumFractionDigits = 10") end
def find_and_replace(dir, findstr, replacestr) Dir[dir].each do |name| FileUtils.chmod("+w", name) #add text = File.read(name) replace = text.gsub(findstr,replacestr) if text != replace puts "Fix: " + name File.open(name, "w") { |file| file.puts replace } STDOUT.flush end end Dir[dir + '*/'].each(&method(:find_and_replace)) end