将ForEach与字符串数组一起使用-[String]没有成员“ identified”

时间:2019-08-01 17:46:42

标签: swift swiftui

我正在使用Xcode 11 beta 5,我所拥有的不再起作用。这是我的代码:

struct ModeView : View {
  @EnvironmentObject var state: IntentionState

  var body: some View {
      Picker(selection: $state.selection, label: Text("")) {
        ForEach(state.modes.identified(by: \.self)) { mode in
          Text(mode)
        }
      }.pickerStyle(SegmentedPickerStyle())
  }
}

错误在ForEach(uistate.modes.identified(by: \.self)) { mode in行中,提示:

  

“ [String]”类型的值没有“已标识”成员

当我使用Xcode 11 beta 4时,它运行良好。现在的问题是如何在Xcode beta 5中将ForEach与数组字符串一起使用

4 个答案:

答案 0 :(得分:4)

ForEach的语法在Beta 5中有所改变。

您尝试过吗:

ForEach(state.modes, id: \.self) { mode in
    Text(mode)
}

答案 1 :(得分:1)

根据Apple发行说明,从一开始它就是已知问题。我们必须等待另一个版本。

  

https://developer.apple.com/documentation/ios_ipados_release_notes/ios_ipados_13_beta_5_release_notes

enter image description here

答案 2 :(得分:1)

不推荐使用fabric.Image.fromURL('http://i.imgur.com/8rmMZI3.jpg', function(oImg) { oImg.selectable = false; oImg.id = 'image'; canvas.add(oImg); }); canvas.on('mouse:wheel', function(opt) { var delta = opt.e.deltaY; var pointer = canvas.getPointer(opt.e); var zoom = canvas.getZoom(); zoom = zoom + delta/200; if (zoom > 20) zoom = 20; if (zoom < 0.01) zoom = 0.01; canvas.zoomToPoint({ x: opt.e.offsetX, y: opt.e.offsetY }, zoom); opt.e.preventDefault(); opt.e.stopPropagation(); }); 方法,现在正确的语法为:

identified(by:)

或将内容移至闭包后:

init(Data, id: KeyPath<Data.Element, ID>, content: (Data.Element) -> Content)

答案 3 :(得分:0)

假设您有一个这样的名称数组

让名字= [“麦克”,“杰克”,“吉尔”]

ForEach(名称,id:.self){文本($ 0)}

Text($ 0)-这将打印名称数组中的所有元素。

note **使用backslashsign.self代替.self,反斜杠符号在这里不起作用。

这有效。谢谢。

相关问题