大家好我已尝试了一些解决方案,但没有运气。
我从Data Core获取文本,但textview上有可选项。
打印时,它在文本中显示为可选。
page22TextView?.text = ("\(trans.value(forKey: "page22"))")
任何人都可以阐明这一点!我试图解开它,但它仍然是stillelow:显示。
完整功能如下:
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)")
}
}
答案 0 :(得分:1)
尝试设置获取nil值的默认值
page22TextView?.text = (trans.value(forKey: "page22") as? String) ?? ""
它会从trans
设置您的值,如果它由nill
设置后退""
。
希望它能帮到你。
答案 1 :(得分:0)
尝试使用展开可选项,如果让然后分配到您的textview(如果有必要,然后向下转换您的值)
if let value = trans.value(forKey: "page22") {
page22TextView?.text = value
}
或
use guard for unwrap
答案 2 :(得分: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建议的方式回答