ios - View Controller 无法访问数组中的元素

标签 ios arrays swift

我正在尝试使用 swift 代码在 apples xcode 程序中创建我的第一个游戏,但我遇到了数组问题。这是代码:

//
//  ViewController.swift
//  War
//
//  Created by grayson seymour  on 5/13/16.
//  Copyright © 2016 SanGames. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var firstCardImageView: UIImageView!
    @IBOutlet weak var secondCardImageView: UIImageView!
    @IBOutlet weak var playRoundButton: UIButton!
    @IBOutlet weak var backgroundImageView: UIImageView!

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

        self.playRoundButton.setTitle("Play", forState: UIControlState.Normal)
    }

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

    @IBAction func playRoundTapped(sender: UIButton) {

        var cardNamesArray:[String] = ["card0", "card1", "card2", "card3", "card4", "card5", "card6", "card7", "card8", "card9"]

        // Creates randomly generated number for first and second card
        let randomCardFirst = Int(arc4random_uniform(10))
        let randomCardSecond = Int(arc4random_uniform(10))

        // checks to see what imageview to set for the cards
        let firstCardString:String = self.cardNamesArray[randomCardFirst]
        let secondCardString:String = self.cardNamesArray[randomCardSecond]

        // sets randomly generated number to imageview for second and first card
        self.firstCardImageView.image = UIImage(named: firstCardString)
        self.secondCardImageView.image = UIImage(named: secondCardString)
    }

}

我在第 39 和 40 行或更具体的地方遇到错误

let firstCardString:String = self.cardNamesArray[randomCardFirst]
let secondCardString:String = self.cardNamesArray[randomCardSecond]

我得到的错误是

value of type View Controller has no member cardNamesArray

由于我对这种语言还很陌生,所以我在代码中做了一些尝试,看看是否可以解决问题,但我所做的一切只会产生另一个错误。任何帮助将不胜感激。谢谢!

最佳答案

为什么你在变量之前调用self(因为你的类没有名为cardNamesArray的变量),这个变量在你的函数内部(意味着它不是global),因此不应调用 self

替换

let firstCardString:String = self.cardNamesArray[randomCardFirst]
let secondCardString:String = self.cardNamesArray[randomCardSecond]

let firstCardString:String = cardNamesArray[randomCardFirst]
let secondCardString:String = cardNamesArray[randomCardSecond]

如果您只想在函数中使用这个cardNamesArray,您可以尝试上面的解决方案。

如果您想在类中多次使用它,可以将 cardNamesArray 声明为全局变量

关于ios - View Controller 无法访问数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37234525/

相关文章:

iphone - 可以在 UIWebView 中使用 iframe 吗?

objective-c - 如何为手动创建的对象添加gestureRecognizer?

c - 将静态结构添加到作为函数参数的数组

Javascript - 链接到更大数组的值数组

swift - 如何使用 Swift Gameplaykit 中的 GKRandomSource 来洗牌问题

ios - UIViewController 内的 UICollectionView 不允许滚动

ios - 减少 UIPickerView 组件之间的空间

javascript - 为什么 'arr.values()' 抛出错误 "arr.values is not a function"

ios - 消除 UINavigationBar 和 UIVisualEffectView 之间独特的模糊边缘

ios - 将 JSON 导入 Realm.io