首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过NSPersistentStore类方法获取存储元数据时出错

通过NSPersistentStore类方法获取存储元数据时出错
EN

Stack Overflow用户
提问于 2010-11-06 20:56:18
回答 2查看 1.2K关注 0票数 4

我正在探索Core数据自定义迁移,为此我需要在现有存储上运行一个测试,看看它是否与当前加载的mom兼容。要做到这一点,我需要从商店获取元数据。

所以我在AppDelegate类中这样做:

代码语言:javascript
复制
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *applicationSupportDirectory = [self applicationSupportDirectory];
NSURL *url = [NSURL fileURLWithPath: [applicationSupportDirectory stringByAppendingPathComponent: @"sharedPersistMainStore.sqlite"]];
NSDictionary *storeMetadata = [NSPersistentStore metadataForPersistentStoreWithURL:url error:&error];

但我知道这个错误:

metadataForPersistentStoreWithURL:error:无法发送到类NSPersistentStore的抽象对象:创建一个具体实例!

听起来他们要我用这个作为一个实例方法。但是API肯定将其作为一个类方法列出。

更奇怪的是,调用此(已弃用的)方法如预期的那样工作:

代码语言:javascript
复制
NSDictionary *storeMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreWithURL:url error:&error];

除了警告它是一个不推荐的方法之外。

有什么好主意吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-06 20:59:18

您需要对NSAtomicStore进行子类以使用该方法。

票数 1
EN

Stack Overflow用户

发布于 2015-01-17 23:13:52

NSPersistentStore是一个抽象类,您正在调用一个未实现的类方法。要获取存储的元数据,必须首先向持久存储协调器注册元数据,然后使用NSPersistentStoreCoodinator+ metadataForPersistentStoreWithURL:error或:

代码语言:javascript
复制
NSPersistentStore *store = [coordinator persistentStoreForURL:url];
NSDictionary *storeMetadata = [[store metadata] copy];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4115122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档