Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 应用程序重命名后核心数据出现问题?_Iphone_Objective C_Ios_Core Data - Fatal编程技术网

Iphone 应用程序重命名后核心数据出现问题?

Iphone 应用程序重命名后核心数据出现问题?,iphone,objective-c,ios,core-data,Iphone,Objective C,Ios,Core Data,我一直在尝试开发一段核心数据代码,但遇到了一些问题。在我的代码的一个版本中,所有的东西都能工作,但是在我尝试润色代码之后,我得到了旧版本,突然它不工作了。我没有改变这门课,这就是为什么我感到困惑 在原始版本中,我得到了可以在本文底部看到的输出,这只是一行,即数据库。在这个版本中,我什么也得不到 我感觉应用程序和核心数据之间的连接可能存在一些问题。我确实通过“Project->rename”对应用程序进行了重命名,所以这可能就是这个问题的原因?恐怕我不知道去哪里找 编辑:刚刚看到xcdatamod

我一直在尝试开发一段核心数据代码,但遇到了一些问题。在我的代码的一个版本中,所有的东西都能工作,但是在我尝试润色代码之后,我得到了旧版本,突然它不工作了。我没有改变这门课,这就是为什么我感到困惑

在原始版本中,我得到了可以在本文底部看到的输出,这只是一行,即数据库。在这个版本中,我什么也得不到

我感觉应用程序和核心数据之间的连接可能存在一些问题。我确实通过“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 Famquick_v2[27431:207]获取的对象:( “(实体:问题;id:0x7088740;数据:)”

=====================================

===================更新============== 我使用以下代码测试了其他参数中是否有任何数据:

//=========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====");
结果如下,表明我确实可以访问数据库,或者?但仍然没有“FetchedObject”:

2011-01-24 22:27:54.094 Famquick_R0_2[29523:207]Q上下文:
2011-01-24 22:27:54.095法姆库什2[29523:207]
2011-01-24 22:27:54.095法姆库什2[29523:207]
2011-01-24 22:27:54.120 Famquick_R0_2[29523:207]实体:()名称问题,managedObjectClassName NSManagedObject,重命名标识符问题,IsaStract 0,超级实体名称(null),属性{
idQ=“(),名称idQ,isOptional 0,isTransient 0,实体问题,重命名标识符idQ,验证谓词(\n),警告(\n),versionHashModifier(null),attributeType 200,attributeValueClassName NSNumber,defaultValue(null)”;
qDiff=“(),名称qDiff,isOptional 0,isTransient 0,实体问题,重命名标识符qDiff,验证谓词(\n),警告(\n),versionHashModifier(null),attributeType 200,attributeValueClassName NSNumber,defaultValue(null)”;
qNrAccess=“(),名称qNrAccess,isOptional 0,isTransient 0,实体问题,重命名标识符qNrAccess,验证谓词(\n),警告(\n),版本HashModifier(null),attributeType 200,attributeValueClassName NSNumber,defaultValue(null)”;
qRegDate=“(),名称qRegDate,isOptional 0,isTransient 0,实体问题,重命名标识符qRegDate,验证谓词(\n),警告(\n),versionHashModifier(null),attributeType 900,attributeValueClassName NSDate,defaultValue(null)”;
qRightAnswer=“(),名称qRightAnswer,isOptional 0,isTransient 0,实体问题,重命名标识符qRightAnswer,验证谓词(\n),警告(\n),版本HashModifier(null),属性类型700,属性ValueClassName NSString,默认值(null)”;
QErrorAnswer1=“(),名称QErrorAnswer1,等参0,isTransient 0,实体问题,重命名标识符QErrorAnswer1,验证谓词(\n),警告(\n),版本HashModifier(null),属性类型700,属性ValueClassName NSString,默认值(null)”;
QErrorAnswer2=“(),名称QErrorAnswer2,等参0,isTransient 0,实体问题,重命名标识符QErrorAnswer2,验证谓词(\n),警告(\n),版本HashModifier(null),属性类型700,属性ValueClassName NSString,默认值(null)”;
question=“(),名称问题,等参变量0,isTransient 0,实体问题,重命名标识符问题,验证谓词(\n),警告(\n),版本HashModifier(null),attributeType 700,attributeValueClassName NSString,defaultValue(null)”;
},子实体{
},userInfo{
},versionHashModifier(null)
2011-01-24 22:27:54.121法姆库姆2[29523:207]
2011-01-24 22:27:54.123法姆库什2[29523:207]
2011-01-24 22:27:54.123 FamQuit_R0_2[29523:207]fetchRequest:(实体:问题;谓词:((null));排序描述符:((null));类型:NSManagedObjectResultType;)
2011-01-24 22:27:54.124法姆库什2[29523:207]
2011-01-24 22:27:54.125 Famquick_R0_2[29523:207]获取的对象:(
)
2011-01-24 22:27:54.126法姆库奇2[29523:207]===停止====

=============更新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_;
}

===================更新-3==============

我真的很困惑这个问题,但我做了测试,重新命名的应用程序回到原来的名称,然后我工作。对我来说,这意味着有一个地方,我找不到连接,我一直在寻找

我真的很想了解如何在不失去与数据库的连接的情况下重命名具有核心数据的应用程序

如果有人能告诉我这件事,我会非常感激,因为我需要给它重新命名

===================更新-4==============

只是为了更新一下这个问题,我从来没有成功地让它工作过,所以我决定利用这个“机会”重写整个应用程序。这听起来可能是解决这个问题的一种严酷的方式,但由于对编程来说非常陌生,它也让我能够清理代码


我仍然对如何解决这个问题很感兴趣。

你没有说你的目标是哪个Mac OS(Mac OS X或iOS),但这听起来像是iOS的问题。在iOS的情况下,核心数据存储在运行时之间是静态的;如果核心数据已经存在于上一个运行时,它将自动使用该数据,尽管您的代码中有任何更改。请尝试在重新构建之前清除所有目标。

您不说要针对哪个Mac OS(Mac OS X或iOS),但这听起来像是iOS的问题。在iOS的情况下,核心数据