【问题标题】:Adding elements to an empty array throws errors向空数组添加元素会引发错误
【发布时间】:2020-02-13 21:03:39
【问题描述】:

我正在尝试将元素添加到一个空字符串数组中,并尝试关注此帖子add-value-to empty-array,但没有一个选项对我有帮助,因为它们每次都会导致 Xcode 抛出错误。 如果累了,这里是代码:

var tasks = [String]()
tasks += ["something"]

这在 x 代码上给了我 6 个错误,第一个是在一行上的连续声明必须用 ; 分隔然后它说这是对任务的无效重新声明,然后是一堆错误,说要使它成为一个函数。当我尝试使用 .append func 而不是 += 时,它会给出相同的错误

现在如果我试试这个:

 var tasks = [String]()
 var tasks = ["Something"]

它只给了我无效的重新声明错误,但我不相信这是向数组添加元素的正确方法

希望这有助于解释我的问题,并对奇怪的初学者问题感到抱歉,但提前感谢您的帮助

【问题讨论】:

  • 你可以在这里试试:online.swiftplayground.run,我只是运行你的第一个代码 sn-p 并尝试print(tasks) 没有编译问题(Swift 5.1)
  • 你的第一个 sn-p 在我的机器上编译。您的第二个 sn-p 确实有问题,因为您要重新声明 tasks。只需省略第二个 var 即可编译。
  • 在 cmets 的答案下方,我发布了一个包含我所有代码的 Pastebin 链接。这是我得到的所有错误的图像imgur.com/a/02nXoE4
  • 你应该使用:tasks += "something",或tasks.append(contentsOf: ["something"])
  • 你不能在函数外调用函数或分配变量,将tasks.append(["something"])移到viewDidLoad

标签: ios swift xcode


【解决方案1】:

我查看了您的 pastebin 中的代码,问题是您在类定义中的不同行上都有声明和赋值。

class TableViewController: UITableViewController {

    //temp list of tasks
    var tasks = [Sting]()

    //giving some default values in the cell
    tasks.append(["something"])

您还拼错了String,但这与修复无关。

另一个问题是类型不匹配。您声明了一个 String 数组,即[String]。但是,您试图将一个 String 数组添加到另一个 String 数组中,这是错误的。

tasks.append(["something"])

相反,你应该有

tasks.append("something")

这会将String 的元素添加到您的Strings 数组中。

最后,您可以做以下两件事之一: 在创建时分配数组

var tasks = ["something"]

或在函数中分配它,例如您的 ViewDidLoad

【讨论】:

    【解决方案2】:

    您不能将+=[String](字符串数组)和String 一起使用。

    这是我在操场上跑的一个例子:

    var array: [String] = []
    array.append("A")
    print(array)
    

    它打印["A"]。如果没有看到您的代码,将很难诊断是否还有其他问题。

    查看您的代码后更新:

    var tasks = [Sting]() // Should be String
    
    tasks.append(["something"])
    

    您不能在声明中追加,您需要将追加添加到函数中(尝试viewDidLoadviewWillAppear 进行测试)。 ["something"]String 的数组,而不是 String。您需要改用"something"

    【讨论】:

    • 好的,我更新了它以使用 append 仍然得到相同的错误这里是一个 Pastebin,我的所有代码都在这个 swift 文件中。 pastebin.com/11YHV7Zg
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    相关资源
    最近更新 更多