Ios 致命错误:使用cloudkit展开可选值时意外发现nil

Ios 致命错误:使用cloudkit展开可选值时意外发现nil,ios,swift,xcode6,icloud,cloudkit,Ios,Swift,Xcode6,Icloud,Cloudkit,我不断得到以下错误: fatal error: unexpectedly found nil while unwrapping an Optional value 我想我只是不明白为什么。有人能帮我找到我的错误吗?是否可变结果是可选的 错误一直指向viewDidLoad()中的一行,我在其中注释。谢谢 // // ViewController.swift // Physics Help! // // Created by Sam Hanson on 2/8/15. // Copyri

我不断得到以下错误:

fatal error: unexpectedly found nil while unwrapping an Optional value 
我想我只是不明白为什么。有人能帮我找到我的错误吗?是否可变结果是可选的

错误一直指向
viewDidLoad()
中的一行,我在其中注释。谢谢

//
//  ViewController.swift
//  Physics Help!
//
//  Created by Sam Hanson on 2/8/15.
//  Copyright (c) 2015 Sam Hanson. All rights reserved.
//


import UIKit
import CloudKit

class ViewController: UIViewController {

//VARIABLES********************************************************

@IBOutlet var c1Answer: UILabel!
@IBOutlet var questions: UILabel!
var resultsOfDB : String = ""
var indexes : [Int] = []
var counter : Int = 0
var newStr : String = ""

//*****************************************************************




override func viewDidLoad() {

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

    self.questions.text = String(getNewQbutton()) //error points to here*********

}


//load the answers, grab them from the cloud base
@IBAction func loadAnswers() {
    let container = CKContainer.defaultContainer()
    var publicDB = container.publicCloudDatabase

    let myQuery = CKQuery(recordType: "QuestionsTable", predicate: NSPredicate(value: true))

    publicDB.performQuery(myQuery, inZoneWithID: nil){
        results, error in

        if error != nil {
            println(error)
        }

        else
        {

            dispatch_async(dispatch_get_main_queue(), { () -> Void in

                self.c1Answer.text = results.description
                println(results.description)

            })
        }
    }

}




@IBAction func getNewQbutton() {

    let container = CKContainer.defaultContainer()
    var publicDB = container.publicCloudDatabase


    let myQuery = CKQuery(recordType: "QuestionsTable", predicate: NSPredicate(value: true))


    publicDB.performQuery(myQuery, inZoneWithID: nil){
        results, error in

        if error != nil {
            println(error)
        }

        else
        {

            dispatch_async(dispatch_get_main_queue(), { () -> Void in

                self.resultsOfDB = results.description

                //for each character in resultsOfDB
                for character in self.resultsOfDB{

                    if(character == "\""){
                        self.indexes.append(self.counter)

                    }
                    self.counter++
                }

                self.newStr = self.resultsOfDB.substringWithRange(Range<String.Index>(start: advance(self.resultsOfDB.startIndex, self.indexes[0] + 1), end: advance(self.resultsOfDB.endIndex, -(self.counter - self.indexes[1]))))

                self.questions.text = self.newStr
            })
        }
        self.counter = 0
    }

}
//
//ViewController.swift
//物理帮助!
//
//由Sam Hanson于2015年2月8日创建。
//版权所有(c)2015 Sam Hanson。版权所有。
//
导入UIKit
导入CloudKit
类ViewController:UIViewController{
//变数********************************************************
@答案:UILabel!
@IBVAR问题:UILabel!
var resultsOfDB:String=“”
变量索引:[Int]=[]
变量计数器:Int=0
var newStr:String=“”
//*****************************************************************
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后,通常从nib执行任何其他设置。
self.questions.text=String(getNewQbutton())//错误指向此处*********
}
//加载答案,从云端抓取答案
@iAction func loadAnswers(){
let container=CKContainer.defaultContainer()
var publicDB=container.publicCloudDatabase
让myQuery=CKQuery(记录类型:“QuestionsTable”,谓词:NSPredicate(值:true))
publicDB.performQuery(myQuery,inZoneWithID:nil){
结果,错误在
如果错误!=nil{
println(错误)
}
其他的
{
dispatch\u async(dispatch\u get\u main\u queue(),{()->Void in
self.c1Answer.text=results.description
println(results.description)
})
}
}
}
@iAction函数getNewQbutton(){
let container=CKContainer.defaultContainer()
var publicDB=container.publicCloudDatabase
让myQuery=CKQuery(记录类型:“QuestionsTable”,谓词:NSPredicate(值:true))
publicDB.performQuery(myQuery,inZoneWithID:nil){
结果,错误在
如果错误!=nil{
println(错误)
}
其他的
{
dispatch\u async(dispatch\u get\u main\u queue(),{()->Void in
self.resultsOfDB=results.description
//对于resultsOfDB中的每个字符
对于self.resultsOfDB中的字符{
如果(字符=“\”){
self.index.append(self.counter)
}
自动计数器++
}
self.newStr=self.resultsOfDB.substringWithRange(范围(开始:高级(self.resultsOfDB.startIndex,self.index[0]+1),结束:高级(self.resultsOfDB.endIndex,-(self.counter-self.index[1]))
self.questions.text=self.newStr
})
}
self.counter=0
}
}

此问题可能有两个原因:

1. 这可能意味着您正试图调用未初始化的对象(
questions
?)的函数(
text
?)

我猜,
问题
未初始化。因此,当调用questions.text时,您正在调用nil插座上的text函数

确保您的插座
问题
在故事板中正确连接(您应该在
@IBOutlet
附近看到一个圆圈)。此外,确保您没有设置多个插座连接

2.
您的函数
getNewQbutton
是一个不返回任何内容的
@IBAction
。因此语句
String(getNewQbutton())
没有太多意义。由于您的函数
getNewQbutton
没有返回类型(并且是一个
@IBOutlet
),您可能给了String(
nil
)。这可能是此问题的第二个原因。

我检查了来自提问的连接,但它仅连接到一个UILabel。可能是函数在提问中输入了nil值。导致错误的文本?谢谢,我想我已经找到了!谢谢你!没问题。如果有帮助,请接受答案:)