将核心数据导入现有项目失败

时间:2013-09-07 20:29:55

标签: ios core-data

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

#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

有谁知道为什么我无法将Core Data导入现有的iOS项目?提前谢谢!

4 个答案:

答案 0 :(得分:2)

在我的框架搜索路径中,删除后,我有一条错误的路径正确构建:

$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks

答案 1 :(得分:1)

它应该像向目标添加CoreData.framework一样简单:

enter image description here

单击链接的框架和库

下的加号按钮(+)

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

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

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

答案 2 :(得分:0)

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

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

- &GT;尝试更改您的属性名称。

答案 3 :(得分:0)

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

  1. 从Xcode中的Frameworks组中删除对CoreData.framework的引用。
  2. 从“图书馆”链接二进制文件中删除CoreData.framework&#39;在目标设置中。
  3. 退出Xcode(Cmd + Q)。
  4. 在Finder中打开项目文件夹并删除CoreData.framework文件。
  5. 启动Xcode,打开您的项目。现在,您可以将CoreData.framework添加到&#39; Link Binary with Libraries&#39;。
  6. 请勿忘记将#import <CoreData/CoreData.h>添加到位于受支持文件的<projectName>-Prefix.pch中。我的前缀标题如下所示:
  7. `

    #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
    

    `

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

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