gpt4 book ai didi

ios - 获取当前核心数据模型的名称

转载 作者:可可西里 更新时间:2023-11-01 05:13:54 25 4
gpt4 key购买 nike

我对我的 Core Data 模型做了一些更改,我们正在按照此处所述处理迁移: Lightweight Migration .

这不是问题。但是,我想根据当前模型版本对我的数据进行其他一些更新。如何获取当前模型版本的名称?我希望看到类似的内容:

[[NSBundle mainBundle] currentDataModelName]

但是我好像找不到。谁能帮忙?

最佳答案

您可以获得模型名称并使用它代替模型标识符。查看这篇优秀文章 Custom Core Data Migrations和相应的Github code .在 NSManagedObjectModel+MHWAdditions 类别的帮助下,您可以检索模型名称。


源模型名称:

NSError *error;
NSString *storeType = ...;
NSURL *storeURL = ...;
NSDictionary *sourceMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:storeType
URL:storeURL
error:&error];
NSManagedObjectModel *sourceModel = [NSManagedObjectModel mergedModelFromBundles:@[[NSBundle mainBundle]]
forStoreMetadata:sourceMetadata];
NSString *sourceModelName = [sourceModel mhw_modelName];


目标模型名称:

NSString *destinationModelName = [[self managedObjectModel] mhw_modelName];

假设您实现了一个 managedModelObject getter。如果没有,这里是开箱即用的实现。

- (NSManagedObjectModel *)managedObjectModel {
if (_managedObjectModel != nil) {
return _managedObjectModel;
}

NSString *momPath = [[NSBundle mainBundle] pathForResource:@"YourModel" ofType:@"momd"];

if (!momPath) {
momPath = [[NSBundle mainBundle] pathForResource:@"YourModel" ofType:@"mom"];
}

NSURL *url = [NSURL fileURLWithPath:momPath];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:url];
return _managedObjectModel;
}


迁移时,源模型名称和目标模型名称将不同。否则,名称将相同。

关于ios - 获取当前核心数据模型的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14387484/

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