coredata的各种报错

  相信大家开发的时候都用过coredata,用来保存数据挺方便的。只是问题是,突然发现,如果最开始创建项目的时候没有选取coredata,那么之后要用的话就需要自己手动添加代码到appdelegate里面了,同时也带来了一系列的报错。

- (NSManagedObjectModel *)managedObjectModel {

// The managed object model for the application. It is a fatal error for the application not to be able to find and load its model.

if (_managedObjectModel != nil) {

return _managedObjectModel;

}

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"对应的名字" withExtension:@"momd"];

_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

return _managedObjectModel;

}

  第一个问题就是managedobjectmodel,如果是复制粘贴的话,这里是必须要改的,url要改为和自己的momd对应的名字。

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {

// The persistent store coordinator for the application. This implementation creates and returns a coordinator, having added the store for the application to it.

if (_persistentStoreCoordinator != nil) {

return _persistentStoreCoordinator;

}

// Create the coordinator and store

_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"对应的名字.sqlite"];

NSError *error = nil;

NSString *failureReason = @"There was an error creating or loading the application's saved data.";

if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {

// Report any error we got.

NSMutableDictionary *dict = [NSMutableDictionary dictionary];

dict[NSLocalizedDescriptionKey] = @"Failed to initialize the application's saved data";

dict[NSLocalizedFailureReasonErrorKey] = failureReason;

dict[NSUnderlyingErrorKey] = error;

error = [NSError errorWithDomain:@"YOUR_ERROR_DOMAIN" code:9999 userInfo:dict];

// Replace this with code to handle the error appropriately.

// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.

NSLog(@"Unresolved error %@, %@", error, [error userInfo]);

abort();

}

return _persistentStoreCoordinator;

}

  第二个问题,储存器的路径也记得要改,因为复制过来肯定不是现项目的路径,所以最好改为自己项目的名称。

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

self.managedObjectContext = [appDelegate managedObjectContext];

self.managedObjectModel = [appDelegate managedObjectModel];

第三个问题,要记得传递managedobjectcontext,要不储存的时候必定会报错。

#import "RUN.h"    NS_ASSUME_NONNULL_BEGIN    

@interface RUN (CoreDataProperties)    

@property (nullable, nonatomic, retain) NSDate *date; 

 @property (nullable, nonatomic, retain) NSNumber *distance;  

@property (nullable, nonatomic, retain) NSNumber *duration;  

@property (nullable, nonatomic, retain) NSOrderedSet*locations;    

@end    @interface RUN (CoreDataGeneratedAccessors)    

- (void)insertObject:(Location *)value inLocationsAtIndex:(NSUInteger)idx;  

- (void)removeObjectFromLocationsAtIndex:(NSUInteger)idx; 

 - (void)insertLocations:(NSArray*)value atIndexes:(NSIndexSet *)indexes; 

 - (void)removeLocationsAtIndexes:(NSIndexSet *)indexes;  

- (void)replaceObjectInLocationsAtIndex:(NSUInteger)idx withObject:(Location *)value;  

- (void)replaceLocationsAtIndexes:(NSIndexSet *)indexes withLocations:(NSArray*)values;  

- (void)addLocationsObject:(Location *)value;  

- (void)removeLocationsObject:(Location *)value;  

- (void)addLocations:(NSOrderedSet*)values;  

- (void)removeLocations:(NSOrderedSet*)values;

@end

NS_ASSUME_NONNULL_END

  iOS9生成managed object的话,会生成4个文件,以“RUN”举例子的话,就是RUN.h、RUN.m、RUN+CoreDataProperties.h、RUN+CoreDataProperties.m。其实区别不大,RUN+CoreDataProperties里主要代码如上图所示,大家注意一下第二句和最后一句,这是OC为了配合swift的一些特性苹果在iOS9添加的,表明这些属性可否为nil。使用的时候和以前没区别,#import "RUN.h"就行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • 本人ios初学者,为自己学习方便,复制各位大神的学习性文章放在自己简书里,仅作为自己学习方便使用,如果作者疑此行为...
    bu再等阅读 676评论 0 0
  • 哦吼吼,又研究了几天,把FMDB这个封装好的数据库搞定了,写了个简单的例子,基于FMDB的添删改查操作,界面很一般...
    lichengjin阅读 527评论 0 0
  • 1.简介 1)coreData提供了对象持久化管理,不需要关心数据的内部存储,只需要关心对象的增删查改. FM...
    _skye阅读 4,570评论 3 26
  • 学习,就像上台阶,需要一步一步上,如果台阶太高,我们要给孩子中间铺垫很多小台阶。对于有些知识,尤其是特别难的知识,...
    彭晓芬阅读 444评论 0 2
  • 每天5个小时,如果你是用来看韩剧、翻手机、玩游戏,那么7年后,你会变成一个生活的旁观者,你最擅长的就是如数家...
    码一阅读 173评论 0 0