gpt4 book ai didi

ios - SequenceType 与 DictionaryGenerator - 当 Class 工作正常时,Struct 出现问题?

转载 作者:行者123 更新时间:2023-11-30 13:47:05 25 4
gpt4 key购买 nike

跟进此处有关 SequenceTypes 和字典的精彩回复 ( https://stackoverflow.com/a/25322949/5583125 )。

我正在使用:Xcode 7.2 和 Swift 2.1

更新:澄清一下,我正在 Playground 中运行它

当嵌入字典中的子项是类时,这非常有效,但我在使用结构时遇到问题 - 我不明白为什么会这样。

效果很好:

 class Item {
let title: String
init(_ title: String) {
self.title = title
}
}

class ItemList : SequenceType {

private var itemDict: [String : Item] = [ : ];

subscript(key : String?) -> Item? {
get {
if key != nil {
return self.itemDict[key!];
}
return nil;
}
set(newValue) {
if key != nil {
self.itemDict[key!] = newValue;
}
}
}

func generate() -> DictionaryGenerator<String, Item> {
return itemDict.generate()
}
}

var list = ItemList()
list["key1"] = Item("value1")
list["key2"] = Item("value2")

for (key, value) in list {
print("Key: \(key) Foo: \(value.title)")
}

爆炸:

当我将 Item 更改为结构时,for-each 崩溃,出现“EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)”异常。

 struct Item {
let title: String
init(_ title: String) {
self.title = title
}
}

//Not so happy when Item is a struct
for (key, value) in list {
print("Key: \(key) Foo: \(value.title)")
}

有人可以告诉我为什么会这样吗?我得到了 Matt Gibson 的回复中描述的基本概念 - 但我不明白为什么将 Item 设为结构而不是 Class 会破坏事物。

最佳答案

也许问题在于您的测试方式有些奇怪?我在实际的 iOS 应用程序中尝试了你的代码,它运行良好。这是我的测试中的完整类 ViewController 类文件:

import UIKit

struct Item {
let title: String
init(_ title: String) {
self.title = title
}
}

class ItemList : SequenceType {

private var itemDict: [String : Item] = [ : ];

subscript(key : String?) -> Item? {
get {
if key != nil {
return self.itemDict[key!];
}
return nil;
}
set(newValue) {
if key != nil {
self.itemDict[key!] = newValue;
}
}
}

func generate() -> DictionaryGenerator<String, Item> {
return itemDict.generate()
}
}


class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

let list = ItemList()
list["key1"] = Item("value1")
list["key2"] = Item("value2")

for (key, value) in list {
print("Key: \(key) Foo: \(value.title)")
}


}

}

运行良好,并输出:

Key: key1 Foo: value1
Key: key2 Foo: value2

关于ios - SequenceType 与 DictionaryGenerator - 当 Class 工作正常时,Struct 出现问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34796503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com