を動作していない移入し、正しくFetchedResultsController
によって移入されHolesTable
と呼ばれるUITableView
を、含まれていること、ScorecardViewController
と呼ばれます。FRCは、私はビューコントローラを持っているテーブルビューが、FetchedResultsControllerDelegate方法は
しかし、ユーザーがデータを編集すると、FRC delegate
メソッドのどれも呼び出されません。つまり、各FRC delegate
メソッドにブレークポイントを設定していますが、いずれもトリガーされません。
ScorecardViewController
はHolesTable
ためのデリゲートで、それを動作させるための方法の必要なセットを実装しています。また、HolesTable
は、データソースがあり、ScorecardViewController
となるようにdelegate
がIBに設定されています。
コンテキストの場合は、アプリケーションのどこかで、が正しく動作するようにほぼ同じ設定をしています。が正しく動作しています。私は、表示コントローラーCourseViewController
を持っています。これは、UITableView
,ScorecardTable
をホストし、FRCがリンクされています。
ScorecardTable
はFRCから正しく読み込まれ、すべてのFRC delegate
メソッドが期待どおりに実行されています。私のコードとオンラインリサーチの広範な見直し後
は、私がFRC delegate
にHoleTable
を接続し、どこかのステップを見逃していると結論していますが、私はうまくいかないことができる場所2の私の検査として、この出来事VCには明らかなことは何も表示されません。
ここに欠けている可能性がありますか?問題がどこにあるのかを特定するのに役立つコードを投稿できますか?
ありがとうございます! -
FRC UPDATE 1は、このように定義される:
fileprivate lazy var fetchedResultsController: NSFetchedResultsController<Hole> = {
// Create Fetch Request
let fetchRequest: NSFetchRequest<Hole> = Hole.fetchRequest()
// Configure Fetch Request
self.teeColourString = self.scorecard?.value(forKey: "teeColour") as! String?
fetchRequest.predicate = NSPredicate(format: "%K == %@ AND %K == %@", "appearsOn.offeredAt.name", self.courseName!, "appearsOn.teeColour", self.teeColourString!)
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "holeNumber", ascending: true)]
// Create Fetched Results Controller
let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.coreDataManager.mainManagedObjectContext, sectionNameKeyPath: nil, cacheName: nil)
// Configure Fetched Results Controller
fetchedResultsController.delegate = self
return fetchedResultsController
}()
FRCはうまく機能し、それは、HoleTable
接続tableView
オブジェクトを取り込み。
Hole
表は、3つの整数列HoleNum
、Par
とStrokeIndex
を含有します。私はカスタムセルHoleTableViewCell
を持っています。これらの値はHoleTable
の中に表示されます。
Par
およびStrokeIndex
は、ユーザがセルを直接編集してHoleTable
のインスタンスを通じて更新できます。 `HoleTableViewCell」のコードは次のとおりです。私は期待通りに実行時に
class HoleTableViewCell: UITableViewCell, UITextFieldDelegate {
@IBOutlet weak var holeNumLabel: UILabel!
@IBOutlet weak var SIField: UITextField!
@IBOutlet weak var parField: UITextField!
static let reuseIdentifier = "HoleTableViewCell"
func textFieldDidBeginEditing(_ textField: UITextField) {
print("Editing started")
}
func textFieldDidEndEditing(_ textField: UITextField) {
if textField.tag == 4 {
//ParField has been edited
print("Par is now " + textField.text!)
} else if textField.tag == 5 {
// SIField has been edited
print("SI is now " + textField.text!)
}
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
SIField.delegate = self
SIField.tag = 4
parField.delegate = self
parField.tag = 5
}
}
、テキストフィールドSIField
とparField
トリガーtextFieldDidBeginEditing
とtextFieldDidEndEditing
に編集します。
FRCデリゲートメソッドがトリガされることはありません。これらは、FetchedResultsControllerDelegate
プロトコルメソッドが設定されているUITableView、ScorecardViewController
のクラスで定義されています。
は、さらなる調査の後、私はFRCの背後にある管理オブジェクトコンテキストに起こっ更新がないので、FRCのデリゲートメソッドが発射されていない理由があると思います。
これをさらに進めて、これを実現させる簡単な方法があるかどうかを確認します。
は、fetchedResultsControllerを作成するコードとデータを編集するコードを共有します。 –