如何在Swift中复制"词典"?

也就是说,获取另一个具有相同键/值但不同内存地址的对象.

此外,如何在Swift中复制对象?

谢谢

推荐答案

"Dictionary"实际上是swift中的一个 struct ,它是一种值类型.因此,复制它非常简单:

let myDictionary = ...
let copyOfMyDictionary = myDictionary

复制对象(引用类型)有两种不同的答案.如果对象采用NSCopying协议,那么您只需执行以下操作:

let myObject = ...
let copyOfMyObject = myObject.copy()

如果对象不符合NSCopying,则可能无法复制该对象.根据对象的类,它可以提供自己的方法来获取副本,或者如果对象没有内部私有状态,则可以创建具有相同属性的新对象.

[编辑以更正上一个答案中的错误-NSObject(类和协议)不提供copy或copyWithZone方法,因此不足以复制对象]

Swift相关问答推荐

数据不会被ARC删除在swift'

它是RxSwift中直接用于可扩展视图的有效的可扩展BehaviorRelay值?

文件命名&NumberForMatter+扩展名&:含义?

调度组是否阻止iOS中的主线程?

Swift 扩展:通过方法重载增强现有类

有没有办法让文本字段以不同的 colored颜色 显示而不影响半透明背景?

(Swift)混淆了函数内 for-in 循环的返回值和循环后(函数内)的返回值)

SwiftUI:列表背景为空列表时为黑色

为什么 SwiftUI 中 ForEach 的这个 Select 不起作用?

从 actor 的 init 方法调用方法

Swift 包管理器 Package.resolved 文件末尾的版本是什么意思?

如何在 Combine 合并运算符的输出上使用 eraseToAnyPublisher

闭包 - deinit self 对象的时间

SwiftUI:异步网络请求后@State 值不更新

您可以在运行时访问 Picker 元素并更改它们的 colored颜色 吗

异步等待不会在项目中触发,但在 Xcode playground 中工作正常

如何从 LLDB 调用带有断点的 Swift 函数?

UICollectionView 自定义单元格在 Swift 中填充宽度

3D touch /强制touch 实现

如何在Swift中找出字母是字母数字还是数字