2016-10-31 10 views
0

を作成するために使用されたものと互換性がありませんねえ、私はそれが私を保存しようとするまでコードがpefectly実行モデル構成は、ストア

try managedContext.save() 

ラインでこのBADのアクセスを得続けます値。私は実際のエンティティではなくエンティティの「コピー」を使用している可能性があると思います。しかし、これは、コード内でオリジナルモデルを編集することができないので不可欠です。だから私がしなければならないことは、 "。セーブ()"しようとすると、この悪いアクセスを止めることです。それはコードの最後の4行目です。

基本的にtry managedContext.save()を使用している場合。エラーを出力するキャッチを作成します。だから私は "!"私はなぜアプリケーションがエラーをスローするのかを見ることができるように "試して"からのシンボルを表示します。

致命的なエラー: 'try!'式が予期せずエラーを発生させました:エラードメイン= NSCocoaErrorDomain Code = 134020 "ストアを開くために使用されたモデル構成が、ストアの作成に使用されたモデル構成と互換性がありません。

Picture of Error

コード:毎回キャッチとして

let appDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate) 
let managedContext: NSManagedObjectContext = appDelegate.managedObjectContext 

var properties0 = Array<NSAttributeDescription>() 

let playersList0 = NSEntityDescription.entityForName("PlayersList1", inManagedObjectContext: managedContext) 

let copy = playersList0!.copy() as! NSEntityDescription 

let contentTypeAttribute0 = NSAttributeDescription() 
contentTypeAttribute0.name = "firstName" 
contentTypeAttribute0.attributeValueClassName = "firstName" 
contentTypeAttribute0.attributeType = .StringAttributeType 
contentTypeAttribute0.optional = true 
properties0.append(contentTypeAttribute0) 


copy.properties = properties0 

let playerslistCopyto = NSManagedObject(entity: copy, insertIntoManagedObjectContext: managedContext) 

playerslistCopyto.setValue("John", forKey: "firstName") 



do { 
    try managedContext.save() 
} catch { 
    print("Error") //prints Error everytime 
} 

この版画 "エラー"。私は基本的に "コピー"を保存する方法を見つける必要があります

答えて

0

このエラーは、現在アクセスしようとしているものとは異なるデータベースモデルを持っているために起こります。これは、モデルを使用してデータを作成して保存してから、編集(追加、削除、名前の変更など)し、移行を実行せずにデータストアにアクセスしようとしたためです。私のお勧めは、まだアプリをリリースしていない場合は、データベースを削除して(アプリをアンインストール)、もう一度やり直してください。あなたができるもう一つのことは、軽量の移行を行うようにコアデータに指示することです。 Appleはコード付きの素敵なチュートリアルを持っていますhere

+0

私はアプリとiveの再起動をリリースし、私の携帯電話から私のアプリを複数回削除し、今はMigicalRecordを探しています。また、それに行くための良いリンクを持っていれば、それのためのコード設定があります。私はまだMagicalRecordのことは聞いたことがない@Sealos – Hunter

+0

ああ申し訳ありません!私はあなたのポストで魔法の記録について読んだが、悪い。軽量移行の詳細については、https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweightMigration.htmlにあるコアデータのみを使用して詳しく読むことができます。 – Sealos

+0

okありがとう@Sealos – Hunter

0

あなたのモデルファイルを編集しておく必要があります。あなたは自動移行をする必要があります。そのためにはThe Ray Wenderlich tutorialが適切です。

あなたが現在読んでいるNSEntityDescriptionは、現在保存しようとしているものではありません。また、コアデータによって、移行されていない混乱が作成されなくなります。途中でモデル名を編集したり、データ型を変更したりしましたか?

+0

ファイルは.xcdatamodeldと呼ばれています。私は同じ正確な名前で置き換えています。これは問題ではありませんが、今チュートリアルを見ています。 – Hunter

+0

既存の保存ファイルから読み込むと、モデルの定義も定義されています。これは、Core Dataが不一致を知る場所です。 – Derek

+0

よく知っているイムは、エラーを再現する予定 – Hunter

関連する問題