我是一个新的编码一般,我开始我的旅程与Swift;所以,如果我没有在下面的内容中正确地解释我自己,请随时要求任何澄清(当然,提前感谢)。下面是故事:
背景:
我已经声明了一个结构体,它有一个常量属性,在示例化时设置为一个唯一的ID整数。
此外,我已经声明了一个字典,其中Keys将是唯一的ID Integer Number,Values是前面声明的Structure的示例。Dictionary Key中的唯一ID Integer应该等于作为Value添加到Dictionary的struct示例中的ID Integer属性。
下面是代码说明:
struct SampleStruct {
let id: Int
var title: String //this variable is irrelevant to the question
}
var sampleDictionary: [Int : sampleStructInstance] = [:]
sampleDictionary[1] = SampleStruct(id: 1, title: "Test text")
// Dictionary Key 1 is equal to Value.id 1
sampleDictionary[2] = SampleStruct(id: 2, title: "Test text")
// Dictionary Key 2 is equal to Value.id 2
**问题:**如何编写代码,以便在将struct示例作为值添加到字典键时,代码访问struct示例,检查ID号,并将字典键设置为该ID号?
由于我是新的编码,没有什么太多的尝试,虽然我已经尝试谷歌我的问题,我没有成功地找到它的答案。
3条答案
按热度按时间rfbsl7qr1#
编写一个方法,将结构体相应地添加到字典中
并加以利用
vu8f3i0k2#
在swift中,你可以通过在扩展中添加方法或计算属性来扩展现有类型的功能,这样我们就可以在
Dictionary
中这样做。在这样做的时候,你也可以通过添加where
条件来限制扩展中的代码如何使用。所以这里是扩展,我们说键必须是
Int
,值必须是SampleStruct
我们现在可以向这个扩展添加一个函数,并使它特定于
SampleStruct
extension Dictionary where Key == Int,Value == SampleStruct { mutating func add(_ object:值){ self[object.id] = object } }
为了使用这个函数,我们可以这样做
eanckbw93#
确保字典键和结构id匹配的最简单方法是创建一个辅助函数来添加到字典中:
一种确保字典永远不会被直接访问的方法,可能会添加不匹配的键和id,是创建一个单独的类或结构,其中包含字典和添加/获取等功能: