我正在尝试使用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];

10-02 02:23