加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iphone – 将Core Data添加到现有Xcode项目时未声明的标识符错误

发布时间:2020-12-14 17:42:22 所属栏目:百科 来源:网络整理
导读:我有一个现有的项目,我想使用CoreData. 创建项目后,CoreData.framework已添加到我的Frameworks组下,并且在我的项目目标中的Link Binary With Libraries下 – 建立阶段.我创建这个项目时没有检查“使用核心数据” – 复选框甚至没有 – 它只是在我的项目中.我
我有一个现有的项目,我想使用CoreData.

创建项目后,CoreData.framework已添加到我的Frameworks组下,并且在我的项目目标中的Link Binary With Libraries下 – >建立阶段.我创建这个项目时没有检查“使用核心数据” – 复选框甚至没有 – 它只是在我的项目中.我使用Xcode版本4.6.3.

阅读教程,我去了我的App-Prefix.pch并添加了一个导入到CoreData.它现在看起来像这样:

#import <Availability.h>

#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <CoreData/CoreData.h>
    #import <Foundation/Foundation.h>
#endif

然后,我在AppDelegate.h中添加了以下内容:

@property (readonly,nonatomic,strong) NSManagedObjectContext *managedObjectContext;
@property (readonly,strong) NSManagedObjectModel *managedObjectModel;
@property (readonly,strong) NSPersistentStoreCoordinator *persistentStoreCoordinator;

- (void)saveContext;

现在,当我覆盖托管对象的getter时,Xcode会抛出一个错误:

Use of undeclared identifier ‘_managedObjectContext’; did you mean
‘NSManagedObjectContext’?

这是我在AppDelegate.m中的getter方法:

- (NSManagedObjectContext *)managedObjectContext {
    if(_managedObjectContext != nil)
        return _managedObjectContext;

    NSPersistentStoreCoordinator* psc = [self persistentStoreCoordinator];

    if(psc != nil)
    {
        _managedObjectContext = [[NSManagedObjectContext alloc] init];
        [_managedObjectContext setPersistentStoreCoordinator:psc];
    }

    return _managedObjectContext;
}

我也尝试将.pch文件放在我的Copy Bundle Resources中,但无济于事.救命?

解决方法

您已正确设置所有内容(请注意,您无需将PCH添加到Copy Bundle Resources构建阶段).您收到该错误的原因是因为_managedObjectContext ivar未被合成,因为您在只读属性上覆盖了getter.您需要将属性更改为readwrite(我不建议这样做),在类扩展中将该属性重新定义为readwrite,或者在类扩展或实现块中手动定义ivar.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读