私はコードのコアデータを開発しようとしており、問題にぶつかっています。私のコードのあるバージョンではすべて動作しますが、コードを磨くことを試みた後、私は古いバージョンを持っていて、突然動作しません。私はこのクラスを変更していないので、私は困惑しています。アプリケーションの名前を変更した後、コアデータに問題がありますか?
元のバージョンでは、この記事の最後に表示される出力が表示されますが、これはデータベースである1行だけです。このバージョンでは何も得られません。
アプリとCore Dataとの接続に問題があると感じました。私は "Project - > Rename"を使ってアプリケーションの名前を変更しました。多分それがこの問題の理由ですか?私はどこを見るべきか分からないのではないかと心配しています。
編集:ちょうどxcdatamodelが古い名前を持っていることを見ました!
EDIT2:古いバージョンのコピーの名前を変更して同じ問題が発生したので、この問題の理由はアプリケーションの名前です。今、コアデータデータベースを新しい名前に合わせる方法が不思議です。
// Define qContext
NSManagedObjectContext *qContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"questions" inManagedObjectContext:qContext];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [qContext executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *info in fetchedObjects) {
...
2011-01-24 20:58:38.969 FamQuiz_v2 [27431:207] fetchedObjects:( "(エンティティ:質問; ID:0x7088740;データ:)"、...
===================
====== =========更新:
他のパラメータに次のようなデータde:
//=========PREPARE CORE DATA DB===========//
if (managedObjectContext == nil) { managedObjectContext = [(FamQuiz_v2AppDelegate *)
[[UIApplication sharedApplication] delegate] managedObjectContext]; }
// Define qContext
NSManagedObjectContext *qContext = [self managedObjectContext];
NSLog(@" ");
NSLog(@"qContext: %@", qContext);
NSLog(@" ");
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"questions" inManagedObjectContext:qContext];
NSLog(@" ");
NSLog(@"entity: %@", entity);
NSLog(@" ");
[fetchRequest setEntity:entity];
NSLog(@" ");
NSLog(@"fetchRequest: %@", fetchRequest);
NSLog(@" ");
//>>>>ERROR COMING HERE
NSArray *fetchedObjects = [qContext executeFetchRequest:fetchRequest error:&error];
NSLog(@"fetchedObjects: %@", fetchedObjects);
NSLog(@"====STOP====");
結果は以下の通りで、データベースにアクセスできますか?しかし、まだ "fetchedObjectsない":
2011-01-24 22:27:54.094 FamQuiz_R0_2 [29523:207] qContext:
2011-01-24 22:27:54.095 FamQuiz_R0_2 [29523:207]
2011-01-24 22:27:54.095 FamQuiz_R0_2 [29523:207]
2011-01-24 22:27:54。120 FamQuiz_R0_2 [29523:207]エンティティ:名前質問、managedObjectClassName NSManagedObject、renamingIdentifier質問、isAbstract 0、超越名(null)、プロパティ{
idQ = "()、名前idQ、isOptional 0、isTransient 0、エンティティ質問(\ n)、警告(\ n)、versionHashModifier(null)、attributeType 200、attributeValueClassName NSNumber、defaultValue(null) "; qDiff = "()、名前qDiff、isOptional 0、isTransient 0、エンティティの質問、renamingIdentifier qDiff、検証述語(\ n)、警告(\ n)、versionHashModifier(null)、attributeType 200、attributeValueClassName NSNumber、defaultValue ) "; (\ n)、警告(\ n)、versionHashModifier(null)、attributeType 200、attributeValueClassName NSNumber、defaultValue(null)、nullのいずれかを返します。 ) "; qRegDate = "()、名前qRegDate、isOptional 0、isTransient 0、エンティティ質問、renamingIdentifier qRegDate、検証述語(\ n)、警告(\ n)、versionHashModifier(null)、attributeType 900、attributeValueClassName NSDate、defaultValue(null) ) "; (\ n)、警告(\ n)、versionHashModifier(null)、attributeType 700、attributeValueClassName NSString、defaultValue(null)、nullのいずれかです。 ) "; (null)、属性の型700、attributeValueClassName NSString、defaultValue(null)、およびnullのいずれかを指定します。 ) "; (null)、警告(\ n)、versionHashModifier(null)、attributeType 700、attributeValueClassName NSString、defaultValue(null)、nullのいずれかです。 ) "; (\ n)、警告(\ n)、versionHashModifier(null)、attributeType 700、attributeValueClassName NSString、defaultValue(null)、nullのいずれかを指定します。 ) ";
}、サブエンティティ{
}、ユーザー情報{
}、versionHashModifier(ヌル)
2011-01-24 22:27:54.121 FamQuiz_R0_2 [29523:207]
2011-01-24 22:27:54.123 (null)); sortDescriptors:((null));型:NSManagedObjectResultType(NSStrings); NSQuery_R0_2 [29523:207]
2011-01-24 22:27:54.123 FamQuiz_R0_2 [29523:207] fetchRequest:エンティティ:質問:述語: ;)
2011-01-24 22:27:54.124 FamQuiz_R0_2 [29523:207]
2011-01-24 22:27:54.125 FamQuiz_R0_2 [29523:207] fetchedObjects:(
)
2011-01-24 22:27:54.126 FamQuiz_R0_2 [29523:207] ==== STOP ====
===========アップデート2 ===== =====
ここでは、コードは次のとおり
- (NSManagedObjectModel *)managedObjectModel {
if (managedObjectModel_ != nil) {
return managedObjectModel_;
}
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"FamQuiz_v2" ofType:@"momd"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
managedObjectModel_ = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return managedObjectModel_;
}
=============== UPDATE-3 ====== ========
私はこの手続きについて本当に困惑しています私は元の名前に戻ってアプリの名前を変更するテストをした後、私は働いた。私にとっては、これはどこかに私が見つけることができない接続があり、私が探していることを意味します。
私は、データベースへの接続を失うことなくコアデータでアプリケーションの名前を変更する方法を本当に知りたいと思います。
名前を変更する必要があるので、誰かがこれにいくつかの光を広げることができたら大変感謝します。
ただ、この問題に関する最新情報を提供するために=============== UPDATE-4 ==============
に、私は私は、アプリケーション全体を書き換えるために「機会」を使うことに決めました。この問題を解決する厳しい方法のように聞こえるかもしれませんが、プログラミングにとって非常に新しいので、コードをクリーンアップすることもできました。
私はまだこの問題を解決する方法に非常に興味があります。
あなたのログによると、managedObjectContextは何も印刷していません。このメソッドのFamQuiz_v2AppDelegateを見てみましょう: - (NSManagedObjectModel *)managedObjectModelまたはNSManagedObjectModelを作成した場所。あなたの答えでそれを掲示する価値がありますか? – v01d