加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

字典是否应该转换为Swift中的类或结构?

发布时间:2020-12-14 04:41:09 所属栏目:百科 来源:网络整理
导读:我正在开发一个本机iOS应用程序,它从我们也可以控制的Web服务接收 JSON格式的数据.计划是在18个月内改变后端数据库,转而采用不同的平台. 考虑到这一点,我们希望确保iOS应用程序相对容易适应新的数据源,特别是因为我们可能会更改通过JSON从服务器接收的关联数
我正在开发一个本机iOS应用程序,它从我们也可以控制的Web服务接收 JSON格式的数据.计划是在18个月内改变后端数据库,转而采用不同的平台.

考虑到这一点,我们希望确保iOS应用程序相对容易适应新的数据源,特别是因为我们可能会更改通过JSON从服务器接收的关联数组中使用的键.

有两个目标:

>为每个PHP请求创建一个位置,如果需要,可以修改密钥.这样可以避免挖掘代码来查找job [“jobNumber”]之类的内容.
>清理我们现有的代码,以消除诸如job [“jobNumber”]之类的引用.

我们都是Swift的新手,没有Objective-C经验,但我认为Struct或Class适合创建像job.jobNumber这样的引用.

字典应该转换成类还是结构?表示获取Dictionary< String,String>的可重用方法的示例代码如下所示并将其转换为推荐类型将非常有帮助.

示例词典:

job = {
    "jobNumber" : "1234","jobName" : "Awards Ceremony","client" : "ACME Productions"
}

期望的结果:

println("job name is (job.name)")
// prints: job name is Awards Ceremony

解决方法

要像这样访问它,您需要将字典转换为Struct,如下所示:

编辑/更新:Swift 3.x

struct Job: CustomStringConvertible {
    let number: Int
    let name: String
    let client: String
    init(dictionary: [String: Any]) {
        self.number = dictionary["jobNumber"] as? Int ?? 0
        self.name = dictionary["jobName"] as? String ?? ""
        self.client = dictionary["client"] as? String ?? ""
    }
    var description: String {
        return "Job#: " + String(number) + " - name: " + name + " - client: " + client
    }
}
let dict: [String: Any] = ["jobNumber": 1234,"jobName"  : "Awards Ceremony","client"   : "ACME Productions"]

let job = Job(dictionary: dict)
print(job.number)       //  1234
print(job.name)         //  "Awards Ceremony"
print(job.client)       //  "ACME Productions"
print(job)              // "Job#: 1234 - name: Awards Ceremony - client: ACME Productions"""

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读