jjzjj

ios - 使用 JSONEncoder 对类型为 Codable 的变量进行编码

我设法让JSON和plist编码和解码工作,但只能通过直接调用特定对象的编码/解码函数。例如:structTest:Codable{varsomeString:String?}lettestItem=Test()testItem.someString="abc"letresult=tryJSONEncoder().encode(testItem)这很好用,没有问题。但是,我正在尝试获取一个函数,该函数仅将Codable协议(protocol)一致性作为类型并保存该对象。funcsaveObject(_object:Encodable,atlocation:String){//Somec

swift - Codable 类不符合 Decodable 协议(protocol)

为什么我会收到“类型‘书签’不符合‘可解码’协议(protocol)”错误消息?classBookmark:Codable{weakvarpublication:Publication?varindexPath:[Int]varlocationInText=0enumCodingKeys:String,CodingKey{caseindexPathcaselocationInText}init(publication:Publication?,indexPath:[Int]){self.publication=publicationself.indexPath=indexPath}}我

swift - 如何在核心数据中使用 swift 4 Codable?

Codable似乎是一个非常令人兴奋的功能。但我想知道我们如何在CoreData中使用它?特别是,是否可以直接从/向NSManagedObject编码/解码JSON?我尝试了一个非常简单的例子:并自己定义了Foo:importCoreData@objc(Foo)publicclassFoo:NSManagedObject,Codable{}但是这样使用时:letjson="""{"name":"foo","bars":[{"name":"bar1",}],[{"name":"bar2"}]}""".data(using:.utf8)!letdecoder=JSONDecoder()le

json - 如何从 Swift Codable 中排除属性?

Swift的Encodable/Decodable协议(protocol)与Swift4一起发布,使JSON(反)序列化非常愉快。但是,我还没有找到一种方法来细粒度地控制哪些属性应该被编码,哪些应该被解码。我注意到从随附的CodingKeys枚举中排除该属性会完全将该属性排除在进程之外,但是有没有办法进行更细粒度的控制? 最佳答案 要编码/解码的键列表由称为CodingKeys的类型控制(注意末尾的s)。编译器可以为您合成它,但始终可以覆盖它。假设您想从编码和解码中排除属性nickname:structPerson:Codable{

json - 使用可编码的值,有时是 Int,有时是 String

我有一个API,它有时会以Int形式返回JSON中的特定键值(在本例中为id),而有时它会以字符串形式返回相同的键值。如何使用codable解析该JSON?structGeneralProduct:Codable{varprice:Double!varid:String?varname:String!privateenumCodingKeys:String,CodingKey{caseprice="p"caseid="i"casename="n"}init(price:Double?=nil,id:String?=nil,name:String?=nil){self.price=pri

json - 使用可编码的值,有时是 Int,有时是 String

我有一个API,它有时会以Int形式返回JSON中的特定键值(在本例中为id),而有时它会以字符串形式返回相同的键值。如何使用codable解析该JSON?structGeneralProduct:Codable{varprice:Double!varid:String?varname:String!privateenumCodingKeys:String,CodingKey{caseprice="p"caseid="i"casename="n"}init(price:Double?=nil,id:String?=nil,name:String?=nil){self.price=pri

ios - 使用 JSONEncoder 将 nil 值编码为 null

我正在使用Swift4的JSONEncoder。我有一个带有可选属性的Codable结构,当值为nil时,我希望此属性在生成的JSON数据中显示为null值。但是,JSONEncoder会丢弃该属性并且不会将其添加到JSON输出中。有没有办法配置JSONEncoder以便在这种情况下保留key并将其设置为null?示例下面的代码片段生成{"number":1},但我希望它给我{"string":null,"number":1}:structFoo:Codable{varstring:String?=nilvarnumber:Int=1}letencoder=JSONEncoder()l

ios - 使用 JSONEncoder 将 nil 值编码为 null

我正在使用Swift4的JSONEncoder。我有一个带有可选属性的Codable结构,当值为nil时,我希望此属性在生成的JSON数据中显示为null值。但是,JSONEncoder会丢弃该属性并且不会将其添加到JSON输出中。有没有办法配置JSONEncoder以便在这种情况下保留key并将其设置为null?示例下面的代码片段生成{"number":1},但我希望它给我{"string":null,"number":1}:structFoo:Codable{varstring:String?=nilvarnumber:Int=1}letencoder=JSONEncoder()l

Swift之Codable自定义解析将任意数据类型解析为想要的类型

一、前言大多数现代应用程序的共同点是,它们需要对各种形式的数据进行编码或解码。无论是通过网络下载的Json数据,还是存储在本地的模型的某种形式的序列化表示形式,对于几乎无任何Swift代码库而言,能够可靠地编码和解码不同的数据都是必不可少的。这就是为什么Swift的CodableAPI能成为Swift4.0的新功能一部分时,具有如此重要的重要原因。从那时起,它已发展成为一种标准的、健壮的机制,可以在Apple的各种平台中使用编码和解码包括服务器端Swift。Codable之所以如此出色,是因为它与Swift工具链紧密集成,从而使编译器可以自动合成大量编码和解码各种值所需的代码。但是,有时需要自

Swift之Codable自定义解析将任意数据类型解析为想要的类型

一、前言大多数现代应用程序的共同点是,它们需要对各种形式的数据进行编码或解码。无论是通过网络下载的Json数据,还是存储在本地的模型的某种形式的序列化表示形式,对于几乎无任何Swift代码库而言,能够可靠地编码和解码不同的数据都是必不可少的。这就是为什么Swift的CodableAPI能成为Swift4.0的新功能一部分时,具有如此重要的重要原因。从那时起,它已发展成为一种标准的、健壮的机制,可以在Apple的各种平台中使用编码和解码包括服务器端Swift。Codable之所以如此出色,是因为它与Swift工具链紧密集成,从而使编译器可以自动合成大量编码和解码各种值所需的代码。但是,有时需要自