gpt4 book ai didi

iphone - 将核心数据添加到现有 Xcode 项目时出现未声明的标识符错误

转载 作者:可可西里 更新时间:2023-11-01 05:22:16 25 4
gpt4 key购买 nike

我有一个现有项目,我想使用 CoreData。

创建项目后,CoreData.framework 已添加到我的 Frameworks 组下,它位于 Link Binary With Libraries 下在我项目的 Target -> Build Phases 中。我在创建这个项目时没有选中“使用核心数据”——甚至没有复选框——它只是在我的项目中。我使用 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 会抛出一个错误:

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。您需要将属性更改为可读写(我不建议这样做),在类扩展中将属性重新定义为可读写,或者在类扩展或实现 block 中手动定义 ivar。

关于iphone - 将核心数据添加到现有 Xcode 项目时出现未声明的标识符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18120159/

25 4 0
文章推荐: ios - 如何减慢 CCMoveTo?
文章推荐: javascript - 使用 javascript 改变
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com