私は、変数passageTextを特定の値に設定しても困惑していますが、UITextViewは更新されません。ここで変数がテキストビューのテキストを設定していない
は私のコントローラのコードである:ここで
import UIKit
import CoreData
class FavoritesDetailsViewController: UIViewController, UITextViewDelegate {
@IBOutlet weak var referenceLabel: UILabel!
//I've confirmed that the UITextView is connected to this outlet
@IBOutlet weak var passageText: UITextView!
var specifiedFavorite : String = ""
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
referenceLabel.text? = specifiedFavorite
print("The FavoritesDetailsViewController viewDidLoad")
print("The Value of variable specifiedFavorite sent from segue is: \(specifiedFavorite)")
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Passages")
request.predicate = NSPredicate(format: "reference == %@", specifiedFavorite)
request.returnsObjectsAsFaults = false
do {
let results = try context.fetch(request)
print("fetch request was successful")
if results.count > 0 {
print("The number of results returned is: \(results.count)")
for result in results as! [NSManagedObject] {
print("We got results!")
if let returnedText = result.value(forKey: "passagetext") as? String {
self.passageText.text! = returnedText
print("This is the text from the passageText textview: \(self.passageText.text!)")
}
}
}
} catch {
print("Couldn't fetch results")
}
}
override func viewDidLoad() {
super.viewDidLoad()
print("The FavoritesDetailsViewController viewDidLoad")
print("The Value of variable specifiedFavorite sent from segue is: \(specifiedFavorite)")
print(specifiedFavorite)
}
}
は私のログの出力です:
The Value of variable specifiedFavorite sent from segue is: Genesis 3:1
fetch request was successful
The number of results returned is: 1
We got results!
This is the text from the passageText textview: The Fall
Now the serpent was more crafty than any other beast....
は、だから、「passageText」という名前のUITextViewのテキストが正しく設定されていることが表示されます。
self.passageText.text! = returnedText
.textを追加できないということは、しばしばここで避けていると思う初心者のエラーです。私はまた、UITextViewが私のIBOutletに接続されていることを確認しました。なぜUIが新しい値に更新されないのか分かりません。私はこれについていくつかの新鮮な目を使うことができました。
「passageText」を強く(「弱い」を削除して)宣言してください。 – vadian
@vadian - キーワードweakを削除してpassageTextを宣言しようとしましたが、問題は解決しませんでした。ありがとう –
これは、ループ内にこの値を代入しているという事実と関係があるのだろうかと疑問に思っていますが、結果配列に1つの項目しか返されないことが予想されます。 –