iOS/swift之path、url、data 、String与Data之间的转换、data和字典之间转换、对象序列化反序列化

本文详细介绍Swift中数据处理技巧,包括从文件路径读取数据、字符串与数据的转换、字典序列化与反序列化,以及使用Swift4的Codable协议简化对象持久化过程。通过实例展示了如何将对象编码为JSON格式,并从中解码回原始对象。

**************从path中获取数据************

let path=Bundle.main.path(forResource: "shengshiquxianarea.plist", ofType: nil)
        let proviceDataArr:NSArray = NSArray(contentsOfFile:path!)!

String转成data

 let str: NSString = "ZhuHai XY"
                         let dataValue: Data = str.data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue), allowLossyConversion: true)! as Data//字符串转data

data转成String

 let dat:String = String(data: dataValue as Data, encoding: String.Encoding.utf8)!//data转字符串

dada转成字典,最后是转成具体的字典类型

            let json = try?  JSONSerialization.jsonObject(with: returnResult.data!, options: JSONSerialization.ReadingOptions.allowFragments)as? [String:String]

字典序列化成data

            let dict=["ss":"s"]
            let dictata = try? JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)

对象序列化与饭序列化,

如果要将一个对象持久化,需要把这个对象序列化。过去的做法是实现 NSCoding 协议,但实现 NSCoding 协议的代码写起来很繁琐,尤其是当属性非常多的时候。

Swift4 中引入了 Codable 协议,可以大大减轻了我们的工作量。我们只需要让需要序列化的对象符合 Codable 协议即可,不用再写任何其他的代码。

struct LanguageCodable {

    var name: String

    var version: Int

}

Encode操作:可以直接把符合了 Codable 协议的对象 encode 成 JSON 或者 PropertyList。

let swift = Language(name: "Swift", version: 4)

 

//encoded对象

let encodedData = try JSONEncoder().encode(swift)

 

//从encoded对象获取String

let jsonString = String(data: encodedData, encoding: .utf8)

print(jsonString)

Decode操作:

let decodedData = try JSONDecoder().decode(Language.self, from: encodedData)

print(decodedData.name, decodedData.version)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值