簡體   English   中英

將Core Data添加到現有Xcode項目時未聲明的標識符錯誤

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM