0

大家好,我尝试了一些解决方案,但没有运气。

我从 Data Core 获取文本,但 textview 上有可选的。

当它打印时,它在文本中显示为可选。

page22TextView?.text = ("\(trans.value(forKey: "page22"))")

任何人都可以阐明这一点!试图解开,但它仍然:显示。

完整功能如下:

func getTranscriptions () {
    //create a fetch request, telling it about the entity

    let fetchRequest: NSFetchRequest<TextInputs> = TextInputs.fetchRequest()


    do {
        //go get the results
        let searchResults = try getContext().fetch(fetchRequest)

        //I like to check the size of the returned results!
        print ("num of results = \(searchResults.count)")

        //You need to convert to NSManagedObject to use 'for' loops
        for trans in searchResults as [NSManagedObject] {


            page22TextView?.text = ("\(trans.value(forKey: "page22"))")
            //get the Key Value pairs (although there may be a better way to do that...
            print("\(trans.value(forKey: "page22"))")

        }
    } catch {
        print("Error with request: \(error)")
    }
}
4

3 回答 3

1

尝试设置获取 nil 值的默认值

page22TextView?.text = (trans.value(forKey: "page22") as? String) ?? ""

它将设置您的值trans,如果重新运行nill将设置为"".

希望它会帮助你。

于 2017-02-02T05:26:43.620 回答
0

尝试使用if-let语句:

if let result = trans.value(forKey: "page22") {

    page22TextView?.text = result
}

或尝试使用警卫声明:

guard let result = trans.value(forKey: "page22") else { return }
page22TextView?.text = String(describing: result)

或者你可以像这样强制向上包装它:

let result = trans.value(forKey: "page22")

if result != nil {

    page22TextView?.text = result! as! String
}

或者您可以按照下面@MrugeshTank 在答案中建议的方式进行操作

于 2017-02-02T11:58:57.527 回答
0

尝试使用if let解开可选然后分配给您的文本视图(如有必要,然后向下转换您的值)

if let value = trans.value(forKey: "page22") {
   page22TextView?.text = value
}

或者

use guard for unwrap
于 2017-02-02T05:15:52.360 回答