Swift 2到3迁移String.fromCString
发布时间:2020-12-14 02:25:34 所属栏目:百科 来源:网络整理
导读:我正在尝试将以下代码从此库( https://github.com/dankogai/swift-json)转换为Swift 3兼容代码. 关于fromCString函数存在大量错误,这些错误以前在Swift 2中的String上可用 到处都是错误大致相同: ‘fromCString’ is unavailable: Please use String.init?(
我正在尝试将以下代码从此库(
https://github.com/dankogai/swift-json)转换为Swift 3兼容代码.
关于fromCString函数存在大量错误,这些错误以前在Swift 2中的String上可用 到处都是错误大致相同:
因为我有两个选择可供选择我不确定给出原作者意图的正确选择. 例如,这是一个带错误的片段. extension JSON : CustomStringConvertible { /// stringifies self. /// if pretty:true it pretty prints public func toString(pretty:Bool=false)->String { switch _value { case is NSError: return "(_value)" case is NSNull: return "null" case let o as NSNumber: switch String.fromCString(o.objCType)! { case "c","C": return o.boolValue.description case "q","l","i","s": return o.int64Value.description case "Q","L","I","S": return o.uint64Value.description default: switch o.doubleValue { case 0.0/0.0: return "0.0/0.0" // NaN case -1.0/0.0: return "-1.0/0.0" // -infinity case +1.0/0.0: return "+1.0/0.0" // infinity default: return o.doubleValue.description } } case let o as NSString: return o.debugDescription default: let opts = pretty ? JSONSerialization.WritingOptions.prettyPrinted : JSONSerialization.WritingOptions() if let data = (try? JSONSerialization.data( withJSONObject: _value,options:opts)) as NSData? { if let result = NSString( data:data as Data,encoding:String.Encoding.utf8.rawValue ) as? String { return result } } return "YOU ARE NOT SUPPOSED TO SEE THIS!" } } public var description:String { return toString() } } 请注意上面代码中的fromCString.正确模拟Swift 2行为的正确方法是什么?
因为错误建议像这样使用init(cString :).
String(cString:o.objCType) 检查Apple Documentation以获取更多详细信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |