【问题标题】:How can I access an struct attribute from an array?如何从数组访问结构属性?
【发布时间】:2022-01-28 05:19:51
【问题描述】:

我想要做的是,在一个数组中存储几个 CodigosAutorizacion 类型的对象之后:

for value in 0..<(array.count) {
  let codeArray = CodigosAutorizacion(
      code: validateData!["codigo"] as? String,
      codeCancel: validateData!["cancela_codigo"] as? String,
      codeSite: validateData!["cod_sitio"] as? String,
      codeSiteCancel: validateData!["cancela_cod_sitio"] as? String,
      instance: validateData!["instancia"] as? String
    )
  codes.append(codeArray)

}

像这样访问数组中的对象属性:

 codeCell.codigoSitio.text = codes[indexPath.row].instance

这篇文章给我带来了下一个错误

-在调用下标时没有完全匹配

-如果没有上下文类型,则无法解析对成员“instancia”的引用

这是因为 'codes' 是一个数组,而不是 CodigosAutorizacion 类型

将这些对象存储在一个数组中很重要,因为我需要生成一个包含几个 CodigosAutorizacion 对象的表。有什么办法可以做到吗?

【问题讨论】:

  • 喂。您不能在其范围之外调用对象。 en.wikipedia.org/wiki/Scope_(computer_science)。简而言之,每当您使用“ { } ”创建范围时,内部实例化的任何内容都无法在外部访问
  • 换句话说,将 codes.append(codeArray) 放入你的 for 循环中
  • 我认为您可能只是在问题中将 } 放在了错误的位置,否则您会收到引用 codeArray 的错误。 codes 是如何声明的?此外,您正在根据名为array 的东西的大小进行迭代,但引用来自名为validateData 的字典中的值。对于循环的每次迭代,该字典都是相同的
  • @Olympiloutre, @workingdog 是的,对不起,我的错误。 codes.append(codesArray) 实际上在 for 循环内
  • @Paulw11 codes 被声明为codes: Array&lt;Any&gt;。是的,我正在迭代array,因为array 是一个包含json 类型对象的数组,所以validateData 是一个字典,其中包含array 值,以便for 循环将它们分配给CodigosAutorizacion 结构值

标签: ios arrays swift struct


【解决方案1】:
var codes = [CodigosAutorizacion]()

for value in 0..<(array.count) {
  let codeArray = CodigosAutorizacion(
    code: validateData!["codigo"] as? String,
          codeCancel: validateData!["cancela_codigo"] as? String,
          codeSite: validateData!["cod_sitio"] as? String,
          codeSiteCancel: validateData!["cancela_cod_sitio"] as? String,
          instance: validateData!["instancia"] as? String
    )
    codes.append(codeArray)
}

-- 试试这个--

【讨论】:

    【解决方案2】:

    已修复!这是 codes 数组声明的问题,它不应该是 var codes: Array&lt;Any&gt; 而是 var codes: Array&lt;CodigosAutorizacion&gt; 以便访问 CodigosAutorizacion 的属性

    【讨论】:

    • 其他答案对您有帮助吗?如果是,请将其标记为答案,而不是添加您自己的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多