swift - 我在代码中的某处得到一个 nil 值,我不确定它在哪里以及如何修复它

标签 swift xcode

这是我收到的错误

error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).

我知道错误是由代码中某处的 nil 值引起的,但我找不到它。这是代码,任何人都可以了解 nil 值在哪里,那么我们将不胜感激。

import UIKit

var randomNumber = 0
var challengesArray = [""]
var challengeNumber = 0
var mad : String = ""
var challenge : String = ""

func ChallengeBankSplitter()  {

    let fileURLProject = Bundle.main.path(forResource: "Challenges", ofType: "txt")
    var readStringProject = ""
    do {
        readStringProject = try String(contentsOfFile: fileURLProject!, encoding: String.Encoding.utf8)
    } catch let error as NSError {
        print ("Failed to read from project")
        print (error)
    }
    challengesArray =  readStringProject.components(separatedBy: ".") as Array
    var arrayLength = challengesArray.count
    randomNumber = arrayLength

}


func ChallengeSelector() {
    ChallengeBankSplitter()
    challengeNumber = Int((arc4random_uniform(UInt32(randomNumber))))
    challenge = challengesArray[challengeNumber]
    print (challenge)
}

ChallengeSelector()

最佳答案

据我所知,您已经为以下变量指定了默认值

var randomNumber = 0
var challengesArray = [""]
var challengeNumber = 0
var mad : String = ""
var challenge : String = ""

因此,如果您面临零问题,那么访问上述内容一定不是问题。因此,请确保您访问所有其他变量(检查第一个可选或不可选),如果可选,则使用 if letguard 以避免在运行时访问 nil 导致崩溃。

关于swift - 我在代码中的某处得到一个 nil 值,我不确定它在哪里以及如何修复它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52944525/

相关文章:

xcode - Xcode Instrument 的反汇编时间分析的可靠性

ios - NSFetchedResultsController 添加新记录时如何防止 UITableView 向上滚动?

ios - CryptoSwift - 将 UInt8 数组转换为字符串解析为 nil

xcode - 按钮上方的事件指示器会阻止点击识别

iphone - 如何改变 UITableView 的外观?

iphone - 从子类调用 UIPanGestureRecognizer touchesBegan 的警告

objective-c - 对于 ARC,为什么还要使用 @properties?

ios - 如何为 UILabel 应用 2 行限制,ios

swift - 如何设置单元格间距和 UICollectionView - UICollectionViewFlowLayout 大小比例?

swift - 快速单击按钮时在新 View 中加载数据