我的应用程序已经在dev下几个月了,现在我被要求添加Core Data。 SMH。它是一个tabViewController应用程序。我不知道这是否有助于答案。
所以我在这里尝试添加它并且我遇到了错误。我在 AppDelegate.h 中为核心数据构建,所以我创建了这些IVAR并在以后的.m中适当地构建它们。
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
在需要CoreData交互的viewControllers中,我已经给出了它们(在.h文件中):
@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
并在.m:
中合成它们@synthesize fetchedResultsController = __fetchedResultsController;
@synthesize managedObjectContext = __managedObjectContext;
现在,回到 AppDelegate 。在.m中,当我尝试将managedObjectContext的指针从委托传递给视图时(如此):
viewController1.managedObjectContext = self.managedObjectContext;
viewController2.managedObjectContext = self.managedObjectContext;
我收到一个读取的XCode错误(对于viewController1和2):
Property 'managedObjectContext' not found on object of type 'UIViewController *'
我不明白这一点,因为两个视图控制器中的属性显然存在并被合成。
我甚至尝试过退出并重启XCode。也许系统重启? < - 这是荒谬的吗?
(我知道我添加的内容超出了你的需要..)有什么帮助吗?
答案 0 :(得分:0)
首先,如果已经创建了应用程序without
CoreData,则使用UIManagedDocument设置核心数据会更容易。
所以我会先在AppDelegate中这样做。请参阅Apple开发人员网站上的UIManagedDocument类参考以及我的答案:
Objective c - Core Data saving approach
其次你的appDelegate应该知道你的初始视图控制器,它实际上是你的UITabBarController
,你的标签栏控制器知道它的第一个视图控制器应该是你的上下文的目标,因此需要一个{{ 1}}公共API中的属性。
所以我忘记了确切的代码,但它类似于:
NSManagedObejectContext
希望这能帮到你!
答案 1 :(得分:0)