无法使用索引类型为((Int,()->())'的下标类型[[xxx]]的值

红色天才

我有这个问题,访问数组索引时出错。索引应为整数,但不起作用。我最初尝试使用变量,但是在此示例中,我将其更改为整数0,只是为了表明它不是问题所在的变量。

   let location = SNStore.Welland[index].locations[0] {
                    if location.timestamp > 0 {

                    }
                }

错误是:

 Cannot subscript a value of type '[LocationStore]' with an index of type '(Int, () -> ())'

那么有人可以解释为什么数组不希望索引为int吗?它很奇怪,我听不懂。

我在快速帮助中检查了位置声明,它正确显示了在结构中如何声明位置。(在结构中,它的末尾带有花括号以将其初始化为空。)

var locations: [LocationStore]
瓦瓦瓦玛

在Swift中进行下标是通过调用subscript需要使用的特殊方法在幕后完成Int所以当你写:

locations[0]

Swift实际上是subscript使用里面的值来调用函数[]

locations.subscript(0)

您不能subscript直接调用,但是它在那里,您可以通过subscript自己的类实现定义自定义下标

您将Swift与{ }后面的多余花括号混淆locations[0]Swift将其{ }及其内容解释为带签名的闭包() -> ()(不输入任何内容,不返回任何输出)。由于尾随的闭包语法,Swift然后将该闭包解释为调用该subscript函数locations以执行索引的第二个参数此下标函数接受一个参数an Int,但是您要传递两个参数anInt() -> ()close。这就是错误消息告诉您的内容。

解决方法是删除多余的内容{ }

let location = SNStore.Welland[index].locations[0]
if location.timestamp > 0 {
    // do something
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法为索引类型为int的[CLPlacemark]类型的值下标

无法下标'[(String)]类型的值?索引类型为“ Int”

无法下标[AnyObject]的值?索引类型为Int

Swift 4:无法为类型为'String'的值下标为'CountablePartialRangeFrom <Int>'类型的索引

无法为类型为[Int]的类型为[[NSIndexPath]]的值下标

无法下标[String:AnyObject]类型的值?索引类型为String

Swift中的NSDictionary:无法下标“ AnyObject”类型的值?索引类型为“ Int”

不能使用类型为“String?”的索引对类型为“[String : Int]”的值进行下标

不能使用类型为“()”的索引对类型为“[Int]”的值进行下标

无法使用类型为“字符串”的索引为“[CustomObject]”类型的值添加下标

无法使用类型为“(键:字符串)”的索引对“JSON”类型的值进行下标

无法用索引类型“ Int”的下标“ [String]”的值

错误:无法使用索引类型为“ UIImagePickerController.InfoKey”的索引对类型为“ [String:Any]”的值进行下标

无法用索引类型为“ NSUserInterfaceItemIdentifier”的索引下标类型为“ [String:String]”的值

“无法为类型为 'Dictionary<NSObject, AnyObject>' 的值与类型为 'String' 的索引下标错误

无法使用索引类型为“字符串”的下标“ [[NSObject:Any]””的值

无法用索引类型(String,Int)的[[String,Int)]类型的值下标Swift 2

无法下标类型“JSON”的值和类型“STRING”的索引

迅捷4:无法使用索引类型为“字符串”的下标“ [UIFontDesciptor.AttributeName:Any]”类型的值

无法下标'[String:String]类型的值?” 索引类型为“字符串”

无法下标'[NSObject:AnyObject]类型的值?” 索引类型为“字符串”

无法下标'[AnyObject]类型的值?” 索引类型为“ UInt32”

不能使用类型为“NSKeyValueChangeKey”的索引对“[NSObject : AnyObject]”类型的值进行下标

不能使用类型为“AnyObject”的索引对“[AnyObject]”类型的值进行下标

不能使用类型为“CGFloat”的索引对“[UIImage]”类型的值进行下标

无法用索引类型“ String”下标“ [String:AnyObject]”的值

Swift NSArray下标为AnyObject类型的值

适用于iOS的Google登录:错误“无法使用索引类型为“字符串”的下标类型为[[String:AnyObject]”的值”

在Swift中无法下标AnyObject类型的值