我正在尝试使用CoreData为我的应用程序创建数据存储。据我所知,Xcode 8 CoreData使用的是persistentContainer
而不是managedObjectContext
。
我已经使用所需的实体创建了数据模型,并从“编辑器”菜单中创建了NSManagedObject
子类。
我的问题是,当我想使用persistentContainer
时,找不到标识符。
#import "UserCredentials+CoreDataClass.h"
//Fetch all username to array
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]initWithEntityName:@"UserCredentials"];
NSError *requestError = nil;
//I couldn't find the persistent container even though I had imported my header file.
NSArray *usernames = [self.persistentContainer.viewContext executeFetchRequest:fetchRequest error:&requestError];
我意识到我的CoreDataClass甚至根本没有属性
persistentContainer
。在哪里可以声明此位置,以便访问数据存储? 最佳答案
我假设您在创建对象时选择了核心数据选项。您的对象上下文为null,因为它存储在AppDelegate中。因此,您需要从appdelegate获得上下文引用,如下所示。
NSManagedObjectContext *context = ((AppDelegate*)[[UIApplication sharedApplication] delegate]).persistentContainer.viewContext;
NSArray *usernames = [context executeFetchRequest:fetchRequest error:&requestError];