[英]Undeclared identifier error when adding Core Data to existing Xcode project
我有一个现有的项目,我想使用CoreData。
创建项目后, CoreData.framework
已添加到我的Frameworks
组下,并且在我的项目的Target - > Build Phases中的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, nonatomic, strong) NSManagedObjectModel *managedObjectModel;
@property (readonly, nonatomic, strong) NSPersistentStoreCoordinator *persistentStoreCoordinator;
- (void)saveContext;
现在,当我覆盖managedObjectContext
的getter时,Xcode会抛出一个错误:
使用未声明的标识符'_managedObjectContext'; 你的意思是'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。
对于readonly属性,即使实现,编译器也不会创建Ivar。 声明变量
NsmanagedObjectContext * _managedObjectContext;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.