草庐IT

encode-compare

全部标签

swift - 泛型类型 'T' 不符合协议(protocol) 'Encodable'

我正在尝试快速使用泛型来解释http响应。所有Json响应在顶部都有相同的签名:{"request":"foo","result":"[{},{}....]}所以我正在使用这个:publicstructHttpResponse{publicletrequest:Bool?publicletresult:DATA?enumCodingKeys:String,CodingKey{caserequest="request"caseresult="result"}..在我的网络层:finalclassNetwork{funcgetItems(_path:String)->Observable>

Swift 3 - 错误 - 无法使用类型为 'data' 的参数列表调用 '(using: String.Encoding)'

我有一个在Swift3迁移之前就可以运行的移动SDK。我收到以下错误:Cannotinvoke'data'withanargumentlistoftype'(using:String.Encoding)'这里:openclassfuncapplyTheCode(_theCode:String,forTenanttenant:String,toUserIDuserID:String,toAccountIDaccountID:String,withTokentoken:String,completionHandler:@escaping(_userInfo:AnyObject?,_erro

ios - 参数类型不符合 Encodable

我正在尝试为POST请求创建结构。据我所知,该结构符合Codable类型别名,但我一直收到错误Argumenttype'RegisterUserRequest.Type'doesnotconformtoexpectedtype'Encodable'"whenpassingitinasaparametertomyJSONEncoder.我试图只遵循Encodable,编写建议的必需init(),但似乎没有任何效果。这是我的Struct的样子structRegisterUserRequest:Codable{varfirstName:StringvarlastName:Stringvare

swift - 为什么 Comparable 协议(protocol)没有 Equatable 的默认实现?

为什么swift没有像这样的内置实现EquatableforComparable协议(protocol)?extensionComparable{staticfunc==(lhs:Self,rhs:Self)->Bool{return!(lhs 最佳答案 我在评论中找到了答案谢谢大家:假设a是假的,b那么a==b是假的,对于像Float.nan这样的特殊情况是不正确的根据文档:ANaNcomparesnotequal,notgreaterthan,andnotlessthaneveryvalue,includingitself.Pa

swift - 为什么在具有 Comparable 约束的泛型函数中会丢失泛型类型信息?

当创建一个没有约束的普通泛型函数时,它会按预期工作,即:funcselect(x:T,f:(T)->U)->U{returnf(x)}类型流入闭包参数,在那里它允许我将它作为强类型访问,即:varb1:Bool=select("ABC"){$0.hasPrefix("A")}varb2:Bool=select(10){$0>0}当我添加一个Equatable约束时它继续工作:funcselectEquatable(x:T,f:(T)->U)->U{returnf(x)}varb3:Bool=selectEquatable("ABC"){$0.hasPrefix("A")}但是由于某种原

swift - Comparable 协议(protocol)可以通用吗?

考虑这个结构:structPerson:Comparable{letname:Stringletage:Int}extensionPerson{staticfuncBool{returnlhs.nameBool{returnlhs.age==rhs.age&&lhs.name==rhs.name}}Person结构现在按名称排序。但是,如果我希望能够按name中的任何一个进行排序怎么办?或age,有没有办法制作功能通用? 最佳答案 您不能使协议(protocol)通用。有两种方法可以解决您的问题:您可以创建一个包装器结构,它只包含一

Postman使用技巧之Pre-request Script[自定义encode请求头]

简介postman是web开发人员常用的开发工具,如果遇到需要对请求头做统一的encode,我们该如何做到呢?这就是今天学到的新技能Pre-requestScript.Pre-requestScriptpostman给我们提供了强大的http请求发起能力的同时,还提供了请求发起的前置处理能力,方便我们自定义请求的发起策略,比如今天遇到的问题,我们要对自定义请求头做统一的encode,默认情况下,postman是对请求头不做处理的,这就需要我们把Pre-requestScript用起来.废话不多说,开始吧.首先对模拟的请求添加了2个自定义请求头,值写中文,写完就能看到postman给了红色叹号❗

swift - 扩展 Encodable(或 Codable)的协议(protocol)不符合它

我有2个协议(protocol),Filters和Parameters,它们都扩展了EncodableprotocolFilters:Encodable{varpage:Int{get}}protocolParameters:Encodable{vartype:String{get}varfilters:Filters{get}}我创建符合这些协议(protocol)的结构,因此……structBankAccountFilters:Filters{varpage:IntvarisWithdrawal:Bool}structBankAccountParamters:Parameters{

ios - swift 可编码 : How to encode top-level data into nested container

我的应用程序使用返回JSON的服务器,如下所示:{"result":"OK","data":{//CommontoallURLs"user":{"name":"JohnSmith"//ETC...},//DifferentforeachURL"data_for_this_url":0}}如您所见,特定于URL的信息与通用user字典存在于同一字典中。目标:将此JSON解码为类/结构。因为user很常见,所以我希望它位于顶级类/结构中。编码为新格式(例如plist)。我需要保留原始结构。(即从顶级user信息和子对象的信息重新创建data字典)问题:重新编码数据时,我无法将user字典(

Swift 4 Conform Comparable 协议(protocol)和排序方法问题

我编写了符合Comparable协议(protocol)的Struct。structRecord:Comparable{staticfuncBool{iflhs.wins==rhs.wins{returnlhs.losses>rhs.losses}returnlhs.wins使用>[__lldb_expr_48.Record(wins:4,losses:7),__lldb_expr_48.Record(wins:3,losses:9),__lldb_expr_48.Record(wins:3,losses:8)]最高的胜利应该首先出现,其次是较少的胜利,但如果胜利相等,那么较少的损失应