6

我有一个工作区,我正在尝试向其中添加核心数据。我去了我想要添加核心数据的项目,选择了目标,点击 Link Wit Binary Files 下的 + 号并添加了核心数据框架。那部分工作正常。我可以构建和运行。当我尝试下一个并使用这一行时:

#import <CoreData/CoreData.h>

我得到构建错误。这些构建错误如下所示:

"ARC Semantic Issue"
Pointer to non-const type 'id' with no explicit ownership

这些错误存在于

NSEntityDescription.h
NSManagedObjectModel.h
NSMnagedObject.h
NSManagedObjectContext.h
NSPersistentStore.h

有谁知道为什么我无法将核心数据导入现有的 iOS 项目?提前致谢!

4

4 回答 4

2

在我的框架搜索路径中,我有一个错误的路径,一旦我删除它就会正确构建:

$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks
于 2015-01-06T18:23:41.950 回答
1

它应该像将 CoreData.framework 添加到您的目标一样简单:

在此处输入图像描述

单击链接框架和库下的加号按钮 (+)

然后在声明中的前缀文件(本例中为 Tabs-Prefix.pch)中#ifdef __OBJC__

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
    #impport <CoreData/CoreData.h> //Added core data here
#endif

如果这不起作用,可能是您安装了旧版本的 Xcode 并且路径混乱了。它可能正在尝试导入较旧的框架。

于 2013-09-08T19:43:26.443 回答
0

我有同样的问题。它通过以下步骤解决:

  1. CoreData.framework从 Xcode 中的 Frameworks 组中删除对的引用。
  2. CoreData.framework目标设置中的“将二进制文件与库链接”中删除。
  3. 退出 Xcode ( Cmd+ Q)。
  4. 在 Finder 中打开您的项目文件夹并删除CoreData.framework文件。
  5. 启动 Xcode,打开你的项目。现在您可以添加CoreData.framework“将二进制文件与库链接”。
  6. 不要忘记添加#import <CoreData/CoreData.h><projectName>-Prefix.pch位于支持的文件中。我的前缀标题看起来像这样:

`

#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 <Foundation/Foundation.h>
    #import <CoreData/CoreData.h>
#endif

`

我不知道项目目录中任何文件的存在如何影响编译错误,但它对我有用。

希望这对任何阅读它的人有所帮助。

于 2014-04-18T09:55:37.390 回答
0

我认为这可能与您的实体定义有关。您是否有可能声明了使用属性名称的实体id?这通常是NSNumber模型子类中的一种类型,即*id.

似乎在这种情况下,编译器不是*id在类文件中抱怨,而是id在头文件中指示,这是令人困惑的。

--> 尝试更改您的属性名称。

于 2013-09-09T13:44:57.340 回答