【问题标题】:Append a Struct to an Array using Swift (fails in iOS but not in Playgrounds)使用 Swift 将结构附加到数组(在 iOS 中失败,但在 Playgrounds 中失败)
【发布时间】:2021-06-03 02:49:05
【问题描述】:

这快把我逼疯了!此通用代码创建一个结构数组并附加一个新元素。它在 PlayGrounds 或 macOS 命令行工具项目中运行良好,但如果将其粘贴到 iOS 项目(例如在 ViewController 中),它会失败:它不会将测验识别为数组。为什么?帮助/解决方案表示赞赏。谢谢!

struct Question {
    let text: String
    let answer: String
    
    init(q: String, a: String){
        text = q
        answer = a
    }
}
    
var quiz = [
    Question(q: "A slug's blood is green.", a: "True"),
    Question(q: "Sky is blue", a: "True")
]

quiz.append(Question(q: "Ice is pink", a: "False")) //ERROR: Invalid redeclaration of 'quiz()'

【问题讨论】:

  • 您确定这是在您的 iOS 项目中造成问题的全部代码吗?例如,您确定您还没有在某处声明另一个 quiz 吗?
  • 100% 肯定@DávidPásztor。我为测试创建了一个全新的项目。即使重命名数组,错误仍然存​​在。太疯狂了!

标签: ios arrays swift struct


【解决方案1】:

您的quiz.append 语句不在任何可执行函数中,所以它就像初始化一个名为“quiz”的对象的全新实例,因此您会收到“redeclaration”错误。

在 Playgrounds 中,我相信它会像脚本一样为您执行语句,因此您无需将其放入另一个方法中以便稍后调用。

将 quiz.append 语句像这样放在一个 func 中,错误应该会消失:

func quizAppend(q: Question) {
  quiz.append(q)
}

【讨论】:

  • 我不工作@SuperTully。调用 quizAppend 将导致以下错误:“'quizAppend(q:)' 的重新声明无效”。顺便说一句,您的解决方案在 Playgrounds 中有效,但在 iOS 项目中无效。
  • 我相信这可能与@Kirsteins 对此post 的回答有关,但我无法将这些点联系起来。
猜你喜欢
  • 2019-08-26
  • 1970-01-01
  • 1970-01-01
  • 2014-06-12
  • 1970-01-01
  • 2021-01-05
  • 2018-11-05
  • 1970-01-01
  • 2021-07-23
相关资源
最近更新 更多