【问题标题】:Swift Compiler: cannot subscript a value of type '[NSObject]' with an index of type '()' [closed]Swift 编译器:无法使用“()”类型的索引为“[NSObject]”类型的值下标 [关闭]
【发布时间】:2015-11-18 11:19:44
【问题描述】:

场景:

第 1 步: 第2步: 第 3 步: 问题总结: 我开始使用 swift 及其基本概念。 首先,我尝试使用多个不同类型的元素创建一个数组ab(不确定它是否应该称为数组)。然后我尝试测试一个索引值ab[2]

成功测试索引值后,我制作了一个字典dictAbc,其中我使用了不同的索引ab[4]ab[6] 指向它的键。它引入了第 1 步中提到的错误。

我尝试将ab[2] 设置为步骤 2 中提到的打印功能,它消除了错误

然后我去掉了打印方法,把STEP 3的代码和STEP 1一样,现在没有任何错误了。

代码:

import UIKit

var str = "Hello, playground"

var num: Float64 = 4.00000000000000000000000000

print("\(num)")

let a = "Hello"
let b = 12786
let c = a + String(b)


var ab = [1221, 123123, 123123,123123,"asdasd", "adasdasd",      1263781.123]
ab[2]
var dictAbc = ["hello":ab[4], "let":ab[6]]
dictAbc["let"]

项目导航器屏幕截图

注意:Xcode 版本 7.0 (7A220)

Playground 编译器有问题吗?

【问题讨论】:

  • 请在您的问题中包含代码,而不仅仅是屏幕截图。
  • @EricD.:谢谢你的建议,做到了..
  • 我无法重现该问题。
  • 您的观察结果是,您是否收到过一次错误或根本没有收到过错误!也请检查 EDIT 2..

标签: ios swift xcode7 swift-playground


【解决方案1】:

这是因为 Playground 的工作原理:它会在您完成输入后立即评估 每个 表达式。

所以当你快速输入时:

ab[1]

没有错误,但是如果您花点时间将光标停在括号内:

ab[]

您确实会收到 cannot subscript a value of type '[NSObject]' with an index of type '()' 错误,但由于 Playground 的“实时”特性,这只是一个临时错误消息。

如果在键入索引号后错误仍然存​​在,那么要使其消失,您只需通过在某处添加一个空行、在表达式后添加一个空格或添加其他代码来“唤醒”操场,当然。然后 Playground 将重新评估所有内容并删除错误错误。

【讨论】:

    猜你喜欢
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多