gpt4 book ai didi

objective-c - AppDelegate 未找到 ViewController 的声明和合成属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:03 24 4
gpt4 key购买 nike

我的应用程序已经开发了几个月,现在被要求添加核心数据。 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 的指针从委托(delegate)传递给 View 时(像这样):

viewController1.managedObjectContext = self.managedObjectContext;
viewController2.managedObjectContext = self.managedObjectContext;

我收到一个 XCode 错误(对于 viewController1 和 2):

Property 'managedObjectContext' not found on object of type 'UIViewController *'

我不明白这一点,因为两个View Controllers中的属性显然存在并且是合成的。

我什至尝试过退出并重新启动 XCode。也许系统重启? <-- 这很荒谬吗?

(我知道我添加的内容超出了您的需要。)有什么帮助吗?

最佳答案

首先,如果应用已经创建没有 CoreData,则使用 UIManagedDocument 设置核心数据会更容易。

所以我会首先在 AppDelegate 中执行此操作。请参阅苹果开发者网站上的 UIManagedDocument 类引用以及我在此处的回答以获得帮助:

Objective c - Core Data saving approach

其次,您的 appDelegate 应该知道您的初始 View Controller ,它实际上是您的 UITabBarController,并且您的标签栏 Controller 知道它的第一个 View Controller ,它应该是您上下文的目标,因此需要公共(public) API 中的 NSManagedObjectContext 属性。

所以我忘记了确切的代码,但它是这样的:

// in appDidFinishLaunchingWithOptions or somewhere
UITabBarController* tabBarController = self.window.rootViewController;
UIViewController* viewController = [tabBarController.viewControllers objectAtIndex:[your first controller]];

// Pass your context
viewController.managedObjectContext = self.managedObjectContext;

// Be sure to #import your first viewControllers API so that propert is visible.
// That may have been your initial problem.

希望对你有帮助!

关于objective-c - AppDelegate 未找到 ViewController 的声明和合成属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11039759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com