面对问题"值类型'AppDelegate'没有成员'managedObjectContext'在新的Xcode 8中(使用Swift 3,iOS 10)尝试在View Controller中创建新的上下文时
let context = (UIApplication.shared().delegate as! AppDelegate).managedObjectContext
Run Code Online (Sandbox Code Playgroud)
在Xcode 8中,AppDelegate.swift文件中没有managedObjectContext的代码.AppDelegate.swift中的核心数据堆栈代码仅显示:lazy var persistentContainer:NSPersistentContainer属性和func saveContext().没有managedObjectContext属性.
如何在Xcode 8)中使用Swift 3创建managedObjectContext,或者可能没有必要使用Swift 3来创建它?
我正在制作一个应用程序,为我学校的人们创建课程时间表.这是我为应用程序考虑的粗略设计:
我希望我的NSDocument子类代表个人的时间表.这个想法是他们打开一个文档,并可以将池中的课程添加到他们的时间表,然后保存,共享,打开等.所以时间表将存储在用户选择的外部文件中.
我想使用CoreData存储学生可以选择的所有课程.这些不会随着时间表的创建和编辑而改变,而是可能仅在启动应用程序时检查课程信息的更新.
这似乎是构建我的应用程序的合理方式.问题是,当我创建一个基于NSDocument的应用程序并选中该use CoreData框时,它使其成为一个基于NSPersistentDocument的应用程序,而不是使其成为基于NSDocument的应用程序和CoreData工具.
我不认为这是我想要的行为.有没有办法使用CoreData,但仍然有一个基于NSDocument的应用程序?或者NSPersistentDocument毕竟我应该使用什么?我是否误解了整个NS*Document业务?您对我的应用程序结构有什么建议吗?
谢谢你的帮助!
我正在尝试创建NSManagedObjectContext的新实例,以便我可以在主要线程之外的线程中执行获取请求.据我所知,每个线程都需要它自己的实例,尽管它们可以共享商店.
我的应用是基于核心数据文档的应用.
在这里读了一下我有这个代码:
NSManagedObjectContext *managedObjectContextForThread = nil;
NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel];
if (coordinator != nil) {
managedObjectContextForThread = [[NSManagedObjectContext alloc] init];
[managedObjectContextForThread setPersistentStoreCoordinator:coordinator];
[managedObjectContextForThread setUndoManager:nil];
}
Run Code Online (Sandbox Code Playgroud)
它运行但是当我执行提取时我没有得到任何结果,我怀疑是因为NSPersistentStoreCoordinator未正确设置.
我该如何设置商店协调员与我的主商店合作?或者还有其他我在这里缺少的东西?
core-data ×3
cocoa ×2
xcode ×2
ios ×1
macos ×1
nsdocument ×1
objective-c ×1
swift ×1
swift3 ×1