2016-12-10 27 views
0

私は、変数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が新しい値に更新されないのか分かりません。私はこれについていくつかの新鮮な目を使うことができました。

+0

「passageText」を強く(「弱い」を削除して)宣言してください。 – vadian

+0

@vadian - キーワードweakを削除してpassageTextを宣言しようとしましたが、問題は解決しませんでした。ありがとう –

+0

これは、ループ内にこの値を代入しているという事実と関係があるのだろうかと疑問に思っていますが、結果配列に1つの項目しか返されないことが予想されます。 –

答えて

0

さて、私はこれを経験するまでチョークします。私の自動レイアウト制約が正しく設定されていないため、UITextViewがUIで表示されないという問題がありました。 Xcodeではテキストビューが表示されるため、これを見落とすのは簡単です。しかし、これらの赤線とXcodeの警告を無視しないでください!それらは、アプリケーションがコンパイルされて実行されても、私の場合のように適切な機能に影響を与える可能性があるという問題を示しています。誰かが私の間違いから学ぶことを願っています。

関連する問題