使用 Swift 将结构附加到数组(在 iOS 中失败,但在 Playgrounds 中失败)
Posted
技术标签:
【中文标题】使用 Swift 将结构附加到数组(在 iOS 中失败,但在 Playgrounds 中失败)【英文标题】:Append a Struct to an Array using Swift (fails in iOS but not in 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。我为测试创建了一个全新的项目。即使重命名数组,错误仍然存在。太疯狂了!
【参考方案1】:
您的quiz.append
语句不在任何可执行函数中,所以它就像初始化一个名为“quiz”的对象的全新实例,因此您会收到“redeclaration”错误。
在 Playgrounds 中,我相信它会像脚本一样为您执行语句,因此您无需将其放入另一个方法中以便稍后调用。
将 quiz.append 语句像这样放在一个 func 中,错误应该会消失:
func quizAppend(q: Question)
quiz.append(q)
【讨论】:
我不工作@SuperTully。调用 quizAppend 将导致以下错误:“'quizAppend(q:)' 的重新声明无效”。顺便说一句,您的解决方案在 Playgrounds 中有效,但在 iOS 项目中无效。 我相信这可能与@Kirsteins 对此post 的回答有关,但我无法将这些点联系起来。以上是关于使用 Swift 将结构附加到数组(在 iOS 中失败,但在 Playgrounds 中失败)的主要内容,如果未能解决你的问题,请参考以下文章
你能用 swift 将字符串附加到 Firebase 数组吗