9

首先感谢您的光临。我目前正在使用 Swift 3.1 嵌套泛型,我遇到了初始化错误。

class NestedProduct<T> {

  enum Gadget {
    case smartphone
    case laptop
    case fridge
    case others(T)
  }

  enum Company {
    case Samsung
    case Apple
    case Sony
    case others(T)
  }

  let company: Company
  let gadget: Gadget

  let reviews: [T]

  init(enterCompany: Company, enterGadget: Gadget, enterReView: [T]) {
    company = enterCompany
    gadget = enterGadget
    reviews = enterReView
  }
}

现在,我尝试初始化

let product = NestedProduct<String>(enterCompany: NestedProduct.Company.Apple,
                                            enterGadget: NestedProduct.Gadget.laptop,
                                            enterReView: ["Good"])

但是,我收到一条错误消息,

GenericCache(0x11102a518):检测到循环元数据依赖,中止

我不知道为什么会这样。你们能帮忙吗?谢谢!

4

1 回答 1

9

看起来这是一个已知问题:https ://bugs.swift.org/browse/SR-3779

但是,我能够通过将枚举标记为间接来规避这一点。这会将关联的值存储在另一个打破循环依赖的地方。

indirect enum Gadget {
    case smartphone
    case laptop
    case fridge
    case others(T)
}

indirect enum Company {
    case Samsung
    case Apple
    case Sony
    case others(T)
}
于 2017-04-13T03:12:35.887 回答