Swift - 结构或字典

时间:2017-10-22 11:29:57

标签: swift dictionary struct

通常,在存储字典样式的结构化数据时,例如:

let menuItems = [
    [
        "title": "View Profile",
        "icon": "iconSideProfile"
    ],
    [
        "title": "Invite Friends",
        "icon": "iconSideHeart"
    ],
    [
        "title": "Settings",
        "icon": "iconSideSettings"
    ],
    [
        "title": "Help",
        "icon": "iconSideHelp"
    ],
    [
        "title": "Logout",
        "icon": "iconSideLogout"
    ]
]

我们有一个包含标题和图标的字典数组,将字典存储为字典或结构更好吗?

struct MenuItem {
    let title: String
    let icon: String
}

let menuItems = [
    MenuItem(title: "View Profile", icon: "iconSideProfile"),
    ...
]

存储在结构中的优点是数据被更好地定义,这意味着你不必明确地说字典在某些情况下会包含这个键等。

或者这太浪费了资源?

2 个答案:

答案 0 :(得分:1)

是的,使用数据结构(结构或类)总是更好。使用字典容易出错,会占用更多的内存,会占用更多的CPU时间,并且当您不得不查找和修复直到软件运行并崩溃时才会显示的错误时,会花费大量的工时。变量名中的错别字会被编译器捕获,但是用作字典键的字符串中的错别字只会在软件运行时引起奇怪的错误,有时这些错字会在您继续使用很长时间后出现,并且有些可怜的人坚持维护此代码。

字典适用于键有很多不同且通常不可预测的字符串的情况。一遍又一遍地有两个相同的字符串,它们永远不会改变。没有理由不使用结构或类,并且没有理由避免使用问题中显示的字典。直言不讳,该词典是很糟糕的代码,应不惜一切代价避免。

答案 1 :(得分:0)

当您使用struct担心内存资源时,只需澄清一点。结构是值复制传递类型。 与类(引用类型)不同,它不存储在内存堆中。

所以去使用struct,这是Apple自己推荐的。