【问题标题】:iPhone: Cannot access NSManagedObjectContext using appDelegateiPhone:无法使用 appDelegate 访问 NSManagedObjectContext
【发布时间】:2011-01-19 14:59:54
【问题描述】:

我已经开始进行 iPhone 开发,我正在尝试在我的应用程序中实现核心数据。

在执行 FetchRequest 的过程中,我被以下代码卡住了......

MYAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];

调试时出现如下错误...

Program received signal: "EXC_BAD_ACCESS"

当我运行应用程序时,它会崩溃。

当我在调试模式下按“继续”按钮时,此错误一次又一次出现。

我尝试将我的代码更改为这个.....

NSManagedObjectContext *context = [(MyAppDelegate *)[[UIApplication sharedApplication\ delegate] managedObjectContext];

这可以让应用程序运行,但是当我按下模拟器主页按钮时,控制台中会显示相同的错误。

这里可能出了什么问题?

【问题讨论】:

    标签: iphone core-data exc-bad-access nsmanagedobjectcontext


    【解决方案1】:

    确保您的应用程序委托具有公共访问器方法。我会像这样在 AppDelegate.m 的顶部实现它

    
    + (MYAppDelegate *)sharedAppDelegate
    {
        return (MYAppDelegate *) [UIApplication sharedApplication].delegate;
    }
    

    然后您可以使用以下方式访问它:

    
    [[MYAppDelegate sharedAppDelegate] managedObjectContext]
    

    【讨论】:

    • 这给了我一个类似'MyAppDelegate' may not respond to '+sharedAppDelegate' - (Messages without a matching method signature will be assumed to return 'id' and accept '...' as arguments.)的警告
    • 您是否在尝试调用它的文件中 #import "MyAppDelegate.h"
    • @m5h - 是的,我做到了。 NSManagedObjectContext *context = [[MyAppDelegate sharedAppDelegate] managedObjectContext]; 否则会出错。
    • ShiVik,需要加 + (MYAppDelegate *)sharedAppDelegate;到您的 .h 文件。这是一个警告,但由于该方法存在,它仍然可以找到它。
    • 此答案中的代码与原始帖子有何不同?指针应该是一样的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多