Swift 编译器:无法使用类型为“()”的索引为类型为“[NSObject]”的值添加下标
Swift Compiler: cannot subscript a value of type '[NSObject]' with an index of type '()'
场景:
第 1 步:
第2步:
第 3 步:
问题总结:
我开始使用 swift 及其基本概念。
首先,我尝试制作一个包含多个不同类型元素的数组 ab
(不确定是否应将其称为数组)。然后我尝试测试一个索引值 ab[2]
.
成功测试索引值后,我创建了一个字典 dictAbc
,其中我使用不同的索引 ab[4]
ab[6]
指向它的键。它引入了第 1 步中提到的错误。
我尝试将 ab[2]
封盖到第 2 步中提到的打印函数中,它消除了错误
然后我删除了 print 方法并使 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编译器有问题吗?
这是因为 Playground 的工作原理:它会尝试在您完成输入后立即计算每个 表达式。
所以当你快速输入时:
ab[1]
没有错误,但如果您花点时间将光标停在括号内:
ab[]
您确实会收到 cannot subscript a value of type '[NSObject]' with an index of type '()'
错误,但这只是一个 临时的 错误消息,因为 Playground 的 "real-time" 性质。
如果在输入索引号后错误仍然存在,那么要使其消失,您只需 "wake up" 游乐场,在某处添加一个空行,在 space 之后添加一个 space表达式,当然也可以添加其他代码。然后 Playground 将重新评估所有内容并删除错误。
场景:
第 1 步:
ab
(不确定是否应将其称为数组)。然后我尝试测试一个索引值 ab[2]
.
成功测试索引值后,我创建了一个字典 dictAbc
,其中我使用不同的索引 ab[4]
ab[6]
指向它的键。它引入了第 1 步中提到的错误。
我尝试将 ab[2]
封盖到第 2 步中提到的打印函数中,它消除了错误
然后我删除了 print 方法并使 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编译器有问题吗?
这是因为 Playground 的工作原理:它会尝试在您完成输入后立即计算每个 表达式。
所以当你快速输入时:
ab[1]
没有错误,但如果您花点时间将光标停在括号内:
ab[]
您确实会收到 cannot subscript a value of type '[NSObject]' with an index of type '()'
错误,但这只是一个 临时的 错误消息,因为 Playground 的 "real-time" 性质。
如果在输入索引号后错误仍然存在,那么要使其消失,您只需 "wake up" 游乐场,在某处添加一个空行,在 space 之后添加一个 space表达式,当然也可以添加其他代码。然后 Playground 将重新评估所有内容并删除错误。