美文网首页
framework中加载资源(CoreData)

framework中加载资源(CoreData)

作者: 点点_星光 | 来源:发表于2020-10-17 11:19 被阅读0次

    一开始项目中使用coredata保存数据,自己写了一个单例管理。其中获取CoreData.momd文件:

    - (NSManagedObjectModel *)manageObjectModel {
        if (_manageObjectModel != nil) {
            return _manageObjectModel;
        }
        
        NSURL *modelURL = [[NSBundle mainBundle] URLForResource:kDDCoreDataManagerModelName withExtension:@"momd"];
        /*
        if(@available(iOS 11.0, *)){
        } else {
            modelURL = [modelURL URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mom", kDDCoreDataManagerModelName]];
        }*/
        _manageObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
        return _manageObjectModel;
    }
    

    随后coredata转移到SDK中,打包framework之后直接闪退,定位到_manageObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];意思是modelURL为nil,无法加载空的。
    通过和之前的对比,发现是无法找到CoreData.momd文件,查看.framework内容CoreData.momd存在里面。


    image.png

    剩下的就是从.framework查找CoreData.momd路径,之前代码是用mainBundle,此次通过-bundleForClass:方法获取bundle。代码更新如下

    - (NSManagedObjectModel *)manageObjectModel {
        if (_manageObjectModel != nil) {
            return _manageObjectModel;
        }
        
        //NSURL *modelURL = [[NSBundle mainBundle] URLForResource:kDDCoreDataManagerModelName withExtension:@"momd"];
        NSBundle *bundle = [NSBundle bundleForClass:[self class]];
        NSURL *modelURL = [bundle URLForResource:kDDCoreDataManagerModelName withExtension:@"momd"];
        /*
        if(@available(iOS 11.0, *)){
        } else {
            modelURL = [modelURL URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mom", kDDCoreDataManagerModelName]];
        }*/
        if (modelURL) {
            _manageObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
        }
        return _manageObjectModel;
    }
    

    同理获得其他的资源,只要获取到bundle就可以读取了。

    相关文章

      网友评论

          本文标题:framework中加载资源(CoreData)

          本文链接:https://www.haomeiwen.com/subject/ccvxmktx.html