[英]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.