Swift 3.1嵌套泛型循环元数据错误

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):检测到循环元数据依赖关系,正在中止

我不知道为什么会出现这种情况。请问各位能否帮忙解决?谢谢!


1
当我删除每个“Gadget”和“Company”的case others(T)时,它似乎可以工作。 - Bob Lee
1
你是"Bob Lee"吗? :D - Bista
2
哈哈,我是开发者鲍勃 :) - Bob Lee
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)
}

谢谢 :) 我会再多学习一点关于间接枚举的知识! - Bob Lee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接