在打印时显示的文本视图中可选

Optional in text view showing when printing

大家好,我尝试了一些解决方案,但都不成功。

我正在从 Data Core 获取文本,但文本视图上有可选内容。

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

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)")
    }
}

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

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

use guard for unwrap

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

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

它将根据 trans 设置您的值,如果它重新运行 nill 将由 "" 设置。

希望对您有所帮助。

尝试使用 if-let 语句:

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

    page22TextView?.text = result
}

或尝试使用 guard 语句:

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 在回答中建议的方式进行操作