gpt4 book ai didi

iphone - 核心数据 : Not able to add persistent store to coordinator

转载 作者:行者123 更新时间:2023-11-29 04:41:02 27 4
gpt4 key购买 nike

我正在制作一个应用程序,它根据某些属性(例如名称、颜色、重量等)显示生物体,但这些属性直到运行时才会知道。这就是我以编程方式创建 NSManagedObjectModel 的原因。看来我能够正确初始化模型,因为我使用 NSLog 语句来显示生物体实体的属性。但是当我调用该方法时:

[orgPersistentStoreCoordinator 
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil URL:storUrl options:nil error:&error]

它返回“否”,我在持久存储协调器方法中收到一个错误,内容如下:

"Could not add persistent store:The operation couldn’t be completed. (Cocoa error 256.)"

我尝试打开这些选项,但仍然遇到相同的错误:

NSString * const NSMigratePersistentStoresAutomaticallyOption;
NSString * const NSInferMappingModelAutomaticallyOption;

完整代码如下:

- (NSPersistentStoreCoordinator *)orgPersistentStoreCoordinator {

if (orgPersistentStoreCoordinator != nil) {
return orgPersistentStoreCoordinator;
}
NSURL *storUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory]
stringByAppendingPathComponent:@"organisms.sqlite"]];
NSError *error = nil;

orgPersistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]
initWithManagedObjectModel:[self orgManagedObjectModel]];

NSLog(@"Entities: %@",[[self orgManagedObjectModel] entities]);

if (![orgPersistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil URL:storUrl options:nil error:&error]) {
/*Error for store creation should be handled in here*/
NSLog(@"Could not add persistent store:%@",[error localizedDescription]);
}

return orgPersistentStoreCoordinator;

}

这是我如何以编程方式创建 ManagedObjectModel 的片段。

+ (NSManagedObjectModel *) orgManagedObjectModel 
{
FieldGuide *f = [FieldGuide sharedFieldGuide];



NSManagedObjectModel *orgModel = [[NSManagedObjectModel alloc]init];

NSEntityDescription *organismEntity = [[NSEntityDescription alloc]init];
[organismEntity setName:@"OrganismCoreData"];
[organismEntity setManagedObjectClassName:@"OrganismCoreData"];
[orgModel setEntities:[NSArray arrayWithObject:organismEntity]];


NSMutableArray *orgEntityProperties = [[NSMutableArray alloc]init];

// 1. Name attributes
for (NameParameter *n in f.nameAttributes)
{
NSAttributeDescription *nameAttr = [[NSAttributeDescription alloc]init];
[nameAttr setName:n.name];
[nameAttr setAttributeType:NSStringAttributeType];
[orgEntityProperties addObject:nameAttr];
}
[organismEntity setProperties:orgEntityProperties];


return orgModel;
}

最后,当我尝试插入一些生物并通过 NSManagedObjectContext 保存时,应用程序终止并在日志中显示此内容:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This NSPersistentStoreCoordinator has no persistent stores.  It cannot perform a save operation.'

任何帮助或指导将不胜感激,谢谢!

编辑:是的,我尝试从模拟器中删除应用程序,清理目标,并通过查找器从文档文件夹中删除organism.sqlite。

编辑#2:我忘了补充一点,addPersistentStore 方法还会返回另一个错误:

2012-04-30 14:13:46.109 biodex[7510:14803] CoreData: error: (1) I/O error for database at /Users/junryandelacruz/Library/Application Support/iPhone Simulator/5.1/Applications/ACE957AF-2FC0-4EAF-B226-5019F70FAB90/Documents/organisms.sqlite.  SQLite error code:1, 'near "OR": syntax error'

最佳答案

您的storeURL 中似乎有错误。这是“未知文件读取错误”,通常与文件路径有关。

来自documentation :

NSFileReadUnknownError = 256,

第二个错误当然与添加持久存储无关。检查代码中的“OR”谓词。

关于iphone - 核心数据 : Not able to add persistent store to coordinator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10390358/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com