私はXcode 8とSwift 2.3を使用しており、永続ストアにいくつかのデフォルトデータを挿入する際に発生するコアデータの問題をデバッグしようとしています。私はコアデータブックから少し頭の中で学んでいますXcodeのデバッグセッションが停止しているのはなぜですか?
この機能はデフォルトのデータをインポートする必要があるかどうかをチェックしています(私を信頼しています)。そして必要ならばそれを設定します:私とすぐに
private let _sharedCDHelper = CDHelper() /* breakpoint 3 */
class CDHelper : NSObject {
// MARK: - SHARED INSTANCE
class var shared : CDHelper {
return _sharedCDHelper /* breakpoint 2 */
}
、ブレークポイントで停止3:breakpoint1で
func checkIfDefaultDataNeedsSetup (url:NSURL, type:String) {
if isDefaultDataAlreadySetupForStoreWithURL(url, type: type) == false {
if let lift = NSEntityDescription.entityForName("Lift", inManagedObjectContext: CDHelper.shared.context) { /*breakpoint*/ 1
// not returning here
let newLiftEvent = Lift(entity: lift, insertIntoManagedObjectContext: CDHelper.shared.context)
newLiftEvent.uid = 0
newLiftEvent.liftName = "Back Squat"
CDHelper.saveSharedContext()
} else {
// skip setup
}
return
}
はそれが私はそれがブレークポイント2と3で停止しているCDHelper.shared.context(inManagedObjectContext引数)を呼び出し、 [ステップイン]をクリックします。
私はそれはそれは、CDHelper.shared.context
を取得するためにオフに行ってきましたが、それはないブレークポイント1の後に次の行に戻ることが期待されます。 XcodeとSimulatorはハングアップしません。それはちょうどこの点に達し、何かを待っているかのようにそこにとどまります。
私はこのオプションのバインディングを推測しています。if let lift = NSEntityDescription.entityForName("Lift", inManagedObjectContext: CDHelper.shared.context)
は割り当てられていないので、メソッドには入っていません。しかし、私は、LiftエンティティがmanagedObjectContext内にあることができると確信しています。私は.xcdatamodeld
でそれを見ます、私はDBをSQLiteのために使用しています。私はデータモデルを削除して再作成しました。また、.MainQueueConcurrencyType
だけを使用していることを確認しました。
誰もが見ることができる、または私が探すべき他のものがあるという明らかな問題はありますか? Lift
エンティティが管理対象オブジェクトのコンテキスト内にあることを確認するために何かできることがあると思いますか?