Swift - 结构体或字典

2023-12-11

一般来说,在存储字典式结构化数据时,例如:

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"),
    ...
]

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

还是这太浪费资源了?


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

所以去使用struct,是苹果自己推荐的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift - 结构体或字典 的相关文章

随机推荐

  • 在 WHERE 子句中使用 CASE 表达式中的“结果表达式”

    是否可以通过使用结果表达式 weight class 来过滤 SQL Server 中的记录CASE表达于WHERE条款 我无法让它工作 因为我收到一条错误消息 列名 weight class 无效 Code SELECT first na
  • 随机时间间隔后调用方法

    我有 5 个方法 我需要在随机时间间隔 1 到 3 秒 后调用它们 假设第一个方法在 1 秒后调用 然后第二个方法在 2 3 秒后调用 下一个方法在 1 5 秒后调用 等等 我使用计时器执行了以下操作 Random rand new Ran
  • AngularJS:如何通过 ng-href 将多个参数传递给控制器​​?

    我有一个包含编辑按钮来更新记录的表 当我单身的时候id to ng href其工作正常并打开表单页面 例如 在我的index html table a class btn btn warning Edit a 但我想再传递一个参数row i
  • WebBrowser Navigate 和 InvokeScript 的流程

    我无法理解我正在构建的这个函数的流程 public void PortalLogin AutoResetEvent signal Navigate to portal string portalUrl website name string
  • 从 bytearrayoutputstream 添加附件到邮件

    我正在尝试发送一封带有附件的电子邮件 如下所示 MimeMessageHelper message new MimeMessageHelper mimeMessage false CharEncoding UTF 8 InputStream
  • openpyxl 按值查找单元格或行

    如果我有一个值而不是迭代整个文档来搜索它 是否有人知道我可以在哪里找到文档中的单元格或行 情况是 我需要比较非常大的电子表格 并且我通过使用每张表格中每条记录中存在的单个 UUID 来进行比较 所以 基本上 ws1 rows1 ws2 ro
  • 南迁移期间 Django GenericRelation 字段不可用

    在 Django 项目中 我定义的模型如下 from django db import models from django contrib contenttypes models import ContentType from djang
  • 使用两个等长数组执行数学运算

    我正在做的事情是如此简单 以至于我正在努力寻找答案 我正在尝试将两个等长数组相减 free array get wmiobject class win32 logicaldisk select ExpandProperty freespac
  • 使用 Hibernate 时如何将 Serialized 更改为 String

    我正在使用 Hibernate 从 MS SQL 创建实体类 但使用 NVARCHAR Hibernate 更改为可序列化类型 当我 CRUD 时 由于 NVARCHAR 和 Serialized 之间的冲突 它会出现一些错误 例外 当 H
  • 泛型方法中的隐式类型转换

    为什么我在以下代码中收到编译器错误 Cannot implicty convert type SpecialNode to T即使 T 必须从 NodeBase 派生 正如我在 where 子句中定义的那样 即使 SpecialNode 实
  • 汇总汇总数据

    我有一个如下表 SoftwareName Count Country Project 15 Canada Visio 12 Canada Project 10 USA Visio 5 USA 我如何查询它才能给我一个总结 例如 Softwa
  • DocuSign Connect X.509 证书身份验证/安全

    如何保护我的 DocuSign Connect https 侦听器 以便仅接受来自 DocuSign 的请求 我已阅读 Connect 服务指南 但不清楚以下设置是否可用于此目的 使用 X509 证书签署消息 此设置是否同时适用于 SOAP
  • 向量化矩阵的 min()

    我希望对以下循环进行矢量化 for i in 1 n for j in 1 m temp mat i j min temp mat i j 1 我以为我能做到temp mat min temp mat 1 但这并没有给我想要的结果 有没有办
  • 当应用程序以不同方式打开/关闭时显示推送通知

    在我的应用程序中 我有多个继承自一个 BaseActivity 的 Activity 我的应用程序收到推送通知GCMBaseIntentService我需要实现下一个逻辑 收到推送时 如果应用程序打开 则显示对话框 如果关闭 则显示通知 M
  • UWP NetworkConnectionChanged 事件

    我正在开发一个UWP应用程序 需要在失去网络连接或设备再次连接后执行一些操作 连接丢失或连接后是否会触发任何事件 我搜索了 www 但我发现的所有内容都是针对 WP8 的 我需要这个用于 Windows 10 上的 UWP 我尝试使用Net
  • 谷歌地图在div中没有​​完全渲染?

    在这里我有map canvas在一个div called map 问题是当我增加width of the map 一侧的谷歌地图未完全渲染 请帮忙 地图区域的宽度正在增加 但地图的右侧未完全渲染 当改变div的大小时 触发地图上的resiz
  • LINQ - 连接多个列表

    我查看了 101 个 Linq 示例here但我在该列表中看不到类似的内容 如果我在那里没有看到相关示例 请链接到它 如果我有这 3 门课 class Student int id string name class Course int
  • 为什么 POST 请求不总是经过预检?

    根据MDN 如果 Content Type 是以下任意一种 则不会预检 POST 请求application x www form urlencoded multipart form data or text plain 但不是multip
  • RDFa OfferCatalog 语法

    我一直在尝试找到使用 RDFa 将两个项目链接在一起的最佳方法 特别是将一个人链接到多个 SoftwareApplication 条目 我目前在作者页面上执行此操作的方式是 div class container text center s
  • Swift - 结构体或字典

    一般来说 在存储字典式结构化数据时 例如 let menuItems title View Profile icon iconSideProfile title Invite Friends icon iconSideHeart title