Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在swift中运行此代码时获取类型不匹配错误_Swift_Casting_Ios8 - Fatal编程技术网

在swift中运行此代码时获取类型不匹配错误

在swift中运行此代码时获取类型不匹配错误,swift,casting,ios8,Swift,Casting,Ios8,我正在创建ImageView的outlet集合,并为其属性创建一个自定义类“TTTImageView”。我想在所有ImageView上添加TapGestureRecognizer,但发现此错误 “NSArray元素与Swift数组元素类型匹配失败” 我的ViewController.swift类如下所示: import UIKit class ViewController: UIViewController { @IBOutlet var fields: [TTTImageView]!

我正在创建ImageView的outlet集合,并为其属性创建一个自定义类“TTTImageView”。我想在所有ImageView上添加TapGestureRecognizer,但发现此错误

“NSArray元素与Swift数组元素类型匹配失败”

我的ViewController.swift类如下所示:

import UIKit

class ViewController: UIViewController {



@IBOutlet var fields: [TTTImageView]!

override func viewDidLoad() {
    super.viewDidLoad()
    self.setUpLogic()
            // Do any additional setup after loading the view, typically from a nib.
}

func setUpLogic(){
    for index in 0 ... fields.count-1{
        let gestureRecognizer = UITapGestureRecognizer(target: self, action: "fieldTapped")
        gestureRecognizer.numberOfTapsRequired = 1
        fields[index].addGestureRecognizer(gestureRecognizer)
    }
}

func fieldTapped(recognizer:UITapGestureRecognizer){

    var img = recognizer.view as TTTImageView
    img.setPlayer("x")


}
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

而TTTImageView.swift是:

import UIKit

 class TTTImageView: UIImageView {
var player : String = String()

func setPlayer(player : String){
    self.player = player
    if(player == "x"){
        self.image = UIImage(named: "alphabet X")
    }
    else{
        self.image = UIImage(named: "alphabet O")
    }
}

}

我认为这是一个类型转换问题,但不知道如何解决。请帮我解决这个问题。谢谢你也许你想要的就是这个

@IBOutlet var fields: [TTTImageView!]
而不是这个

@IBOutlet var fields: [TTTImageView]!
?


请注意的位置!字符。

错误发生在哪一行?在这一行。字段[index].addGestureRecognizer(gestureRecognizer)是否进行了干净的生成?乍一看似乎没有错。你也会遇到编译器或运行时错误吗?