未知的类型名称' NSError'和别的

时间:2014-09-13 22:08:57

标签: ios objective-c xcode

我不是一个菜鸟,但我现在感觉像是一个。

我带了一个现有的工作应用程序。一个在Xcode 5下工作,现在可以在Xcode 6下工作。它可以很好地编译并运行。我在Xcode 6中开始了一个新项目,并开始使用我的工作应用程序的结构重建一个新的应用程序shell。移动我在每个应用程序中使用的所有标准库。我已经在Xcode 5下多次完成了这项工作,没有任何问题。

但是现在当我构建我在特定库(TBXML)中遇到很多错误时,我在其他工作项目中没有得到任何错误,即使它有相同的库。如果我把那些文件拿出来(所以它没有编译它们)没有错误,应用程序启动正常。

我甚至没有包括图书馆。如果我做或不做,也会出现同样的错误。但它们列在编译源下,因此他们正在编译。

错误是这样的: ......等等.... / TBXML / TBXML-Headers / TBXML.h:124:49:未知类型名称' NSError'

就行:

typedef void (^TBXMLFailureBlock)(TBXML *tbxml, NSError *error);

......等等.... / TBXML / TBXML-Headers / TBXML.h:126:71:未知的类型名称' NSString'

就行:

typedef void (^TBXMLIterateAttributeBlock)(TBXMLAttribute *attribute, NSString *attributeName, NSString *attributeValue);

.... blah .... / TBXML / TBXML-Headers / TBXML.h:133:20:找不到' NSObject'的界面声明,' TBXML&#39的超类;

就行:

@interface TBXML : NSObject {

要检查清单的项目:

  1. 我确实拥有所有适当的框架,包括Foundation。
  2. 这些文件没有编译器标志 - 与旧项目匹配。
  3. Build for和Target iOS在两个项目中都是相同的。
  4. 我不是在寻找"不要使用TBXML"因为它在其他项目中工作得很好。
  5. 我假设项目设置有些不同,因为我的旧项目是在Xcode 5下创建的,而这是在Xcode 6下创建的。但我看起来到处都是我知道的。

    *更新*

    这似乎解决了这个问题:TBXML in an iOS 8 extension fails to build

    我想知道为什么。问题仍然存在。为什么一个项目需要#include而另一个项目不需要?主要区别在于一个是在Xcode 5下创建的,另一个是在Xcode 6下创建的。但是这两个项目现在都在Xcode 6中。

1 个答案:

答案 0 :(得分:22)

前缀标题!!!

谢谢Hot Licks - 你引导我回答问题。在我的旧项目中,我有这个:

Xcode Build Settings

在新项目中,我没有。该文件的内容是:

#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>
#endif

所以基本上每个文件都包含Foundation和UIKit。因此,在新项目中,有时需要这些而不包括在内。也许苹果读到这个:http://qualitycoding.org/precompiled-headers/