我一直在试图开发一个核心数据的一段代码,并且遇到了问题。在我的代码的一个版本中,一切正常,但在我一直试图擦亮代码之后,我拥有旧版本,并且突然不起作用。我没有改变这个班,这就是为什么我感到困惑。核心数据问题,应用程序重命名后?
在原始版本中,我得到的可以在这篇文章的底部看到的输出,这只是一行,这是数据库。在这个版本中,我什么都没有。
我有一种感觉,它可能是应用程序和核心数据之间的连接的一些问题。我确实通过“Project - > Rename”重命名了应用程序,所以也许这就是这个问题的原因?恐怕我不知道去哪里看。
编辑:只看到xcdatamodel有旧名称!
编辑2:是否重命名旧版本的副本,并得到相同的问题,所以我想这个问题的原因是应用程序的重命名。现在我想知道如何将核心数据数据库与新名称对齐?
// 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 =“(),name idQ,isOptional 0,isTransient 0,实体问题,renamingIdentifier idQ,验证谓词(\ n),警告(\ n),versionHashModifier(null),attributeType 200,attributeValueClassName NSNumber,defaultValue(null)“;
qDiff =“(),name qDiff,isOptional 0,isTransient 0,entity questions,renamingIdentifier qDiff,validation predicates(\ n),warnings(\ n),versionHashModifier(null),attributeType 200,attributeValueClassName NSNumber,defaultValue(null )“;
qNrAccess =“(),name qNrAccess,isOptional 0,isTransient 0,entity questions,renamingIdentifier qNrAccess,validation predicates(\ n),warnings(\ n),versionHashModifier(null),attributeType 200,attributeValueClassName NSNumber,defaultValue(null )“;
qRegDate =“(),name qRegDate,isOptional 0,isTransient 0,entity questions,renamingIdentifier qRegDate,validation predicates(\ n),warnings(\ n),versionHashModifier(null),attributeType 900,attributeValueClassName NSDate,defaultValue(null )“;
qRightAnswer =“(),name qRightAnswer,isOptional 0,isTransient 0,entity questions,renamingIdentifier qRightAnswer,validation predicates(\ n),warnings(\ n),versionHashModifier(null),attributeType 700,attributeValueClassName NSString,defaultValue(null )“;
qWrongAnswer1 =“(),名称qWrongAnswer1,isOptional 0,isTransient 0,实体的问题,renamingIdentifier qWrongAnswer1,验证谓词(\ n)时,警告(\ n)的,versionHashModifier(空),属性类型700,attributeValueClassName的NSString,默认值(空)“;
qWrongAnswer2 =“(),name qWrongAnswer2,isOptional 0,isTransient 0,entity questions,renamingIdentifier qWrongAnswer2,validation predicates(\ n),warnings(\ n),versionHashModifier(null),attributeType 700,attributeValueClassName NSString,defaultValue(null )“;
question =“(),name question,isOptional 0,isTransient 0,entity questions,renamingIdentifier question,validation predicates(\ n),warnings(\ n),versionHashModifier(null),attributeType 700,attributeValueClassName NSString,defaultValue(null )“;
},{子实体
},{USERINFO
},versionHashModifier(空)
2011-01-24 22:27:54.121 FamQuiz_R0_2 [29523:207]
2011-01-24 22:27:54.123 FamQuiz_R0_2 [29523:207]
2011-01-24 22:27:54.123 FamQuiz_R0_2 [29523:207] fetchRequest :(实体:问题;谓词:((null)); sortDescriptors:((null));类型:NSManagedObjectResultType )
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 ====
=========== UPDATE2 ===== =====
在这里,代码是:
- (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 ====== ========
我真的很困惑这个问题米,但没有测试重新命名应用程序回到原来的名称,然后我工作。对我而言,这意味着我找不到某处,并且我一直在寻找。
我真的很想了解如何用Core Data重命名应用程序,而不会丢失与数据库的连接。
我非常感谢,如果任何人都可以传播一些光,因为我需要重新命名它。
=============== UPDATE-4 ==============
只给这个问题的最新情况,我从来没有成功地让这件事情起作用,所以我决定使用'机会'来重写整个应用程序。可能听起来像是解决这个问题的一种严酷的方式,但作为编程的新手,它也允许我清理代码。
我对如何解决这个问题还是很感兴趣。
根据你的日志managedObjectContext没有打印任何东西。看看这个方法的FamQuiz_v2AppDelegate: - (NSManagedObjectModel *)managedObjectModel或者你创建NSManagedObjectModel的地方。可能值得发布与您的答案? – v01d 2011-01-24 21:54:41