草庐IT

Encodable

全部标签

ios - JSONSerialization.jsonObject 在 swift 4.0 和 4.2 中导致内存泄漏

我正在开发一个iOS应用程序,使用swift4.0(4.2有同样的问题)。我给Encodable添加了一个扩展extensionEncodable{functoDict()throws->[String:Any]?{letjsonEncoder=JSONEncoder()letjsonData=tryjsonEncoder.encode(self)do{returntryJSONSerialization.jsonObject(with:jsonData,options:[])as?[String:Any]}catch{returnnil}}}我有一个Encodable类的实例,它的属

swift - 强制小写 swift 类的所有属性键和值

我需要将一个类的所有键及其值转换为小写。例如,classPerson:Encodable{varfirstName:StringvarlastName:Stringvarcity:String}varperson=Person(firstName:"David",lastName:"Gill",city:"Toronto")letencoder=JSONEncoder()encoder.keyEncodingStrategy=.convertToLowerCaseletencoded=tryencoder.encode(person)print(String(decoding:enco

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>

ios - 参数类型不符合 Encodable

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

swift - 如何在 Swift 4 中使用 JSONEncoder 对字典进行编码

我想用JSONEncoder将字典编码为json。它看起来像一个请求,接收一个字典作为参数并将其编码为json作为http主体。代码如下所示:letdict=["name":"abcde"]protocolRequest{varparams:[String:Encodable]{getset}funcencode(_value:T)throws->DatawhereT:Encodable}extensionRequest{funcencode(_value:T)throws->DatawhereT:Encodable{returntryJSONEncoder().encode(valu

json - 处理包含多种类型的 JSON 数组 - Swift 4 Decodable

我正在尝试使用Swift4Decodable来解析包含两种不同类型对象的数组。数据看起来像这样,included数组是包含Member和ImageMedium对象的数组:{"data":[{"id":"8f7cbbac-c133-4b5e-a2ec-1f32353018fa","type":"post","title":"TestPost1","owner-id":"8986563c-438c-4d77-8115-9e5de2b6e477","owner-type":"member"},{"id":"f6b3c640-a58b-449f-93c7-f6cb7b569a9c","type

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 - `RLMArray` 不符合协议(protocol) 'Encodable'

我想做的事:使用JSONDecoder(),我将json转换为Realm对象。然后我将这个对象保存到Realm数据库中。问题:RLMArray不应用Codable协议(protocol)。我可以遵守Decodable协议(protocol),但Codable我不能。错误信息:类型“Person”不符合协议(protocol)“Encodable”代码:publicclassHobby:Object,Codable{@objcdynamicvartitle:String?@objcdynamicvarcategory:String?}publicclassPerson:Object,Co

ios - 如何在 Swift 4 中将 Encodable 或 Decodable 作为参数传递?

我正在学习JSONParsing。我按照教程进行操作,得到的是:guardleturl=URL(string:"http://localhost/test-api/public/api/register")else{return}varrequest=URLRequest(url:url)request.httpMethod="POST"letnewUser=User.init(name:self.collectionTF[0].text,email:self.collectionTF[1].text,password:self.collectionTF[2].text)do{letj
12