iOS <unknown header '/Users/app/Desktop/WiseAppawo/WiseAppVTwo/WiseAppVTwo-Bridging-Header.h' does

翻译 2016年08月31日 11:00:43


我想开始我的Objective-C的项目中使用斯威夫特。
所以我加了一个迅速类:

import Foundation
@objc class System : NSObject {
    @objc func printSome() {
        println("Print line System");
    }
}

并将其导入一个.m文件:

#import "MyProjectName-Swift.h"

当建设项目中,我得到以下错误:

Bridging header 'PathToMyProject/MyProjectName-Bridging-Header.h' does not exist

注:在“建立设置 - >雨燕编译器 - 代码发生 - > Objective-C的Briding页眉”设置为MyProjectName桥接,Header.h

我应该怎么做来解决这个问题?

任何帮助深表感谢。

编辑:桥接头文件:#如果定义(__ has_​​include)&& __has_include()#包括#ENDIF

#include <objc/NSObject.h>
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>

#if defined(__has_include) && __has_include(<uchar.h>)
# include <uchar.h>
#elif __cplusplus < 201103L
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif

#if defined(__has_attribute) && __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
#else
# define SWIFT_RUNTIME_NAME(X)
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted) 
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# else
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif

#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif

#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif

#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if defined(__has_attribute) && __has_attribute(objc_designated_initializer)
#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
#  define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"

#if defined(__has_feature) && __has_feature(modules)
#endif

#pragma clang diagnostic pop
分享编辑
 
1  
MyProjectName-Swift.hMyProjectName-Bridging-Header.h在相反的方向。工作MyProjectName-Swift.h时自动提供。MyProjectName-Bridging-Header.h然而,半自动提供,即你必须确保它的存在。所以,你确定,你可以看到MyProjectName-Bridging-Header.h在你的项目导航?如果没有,创建并添加一个文件使用该名称到您的项目。然后再次检查,在生成设置的路径是正确的(它应该包括项目目录:MyProjectName/MyProjectName-Bridging-Header.h -  米洛斯 9月29日在'14 9:53
 
你检查你的产品模块的名字是不是空的?(构建设置- >包装- >产品模块名称) -  尼娜 在9:56 09月29日'14
 
龚如心,是我的模块名称为“MyProjectName”而不是厄尔 -  user2408952 9月29日在'14 10:01
 
米洛斯,我想的Xcode应该自动生成该文件briding。因此,没有,我没有在我的项目文件。 -  user2408952在10:02 09月29日'14 
1  
你有没有手动指定的桥接,Header.h?我看到,有一个拼写错误“Briding” -  尼娜 9月29日在'14 10:05

如果在相同的水平的其他类创建桥接文件,则可能需要添加的相对路径,因为这些图片显示。这里注意,桥接文件是在相同的水平的其他类中创建: 在这里输入的形象描述

我在生成设置输入正确的名称, 在这里输入的形象描述

但是编译器未找到该文件。 在这里输入的形象描述

所以,如果我添加从项目的根目录的相对路径(即我加./ProjectName/BridgerFileName.h) 在这里输入的形象描述

现在它编译,我可以在我的目标C类调用一个方法: 在这里输入的形象描述

分享编辑
 
3  
对我来说,没有解决的。它看起来是的XCode没有反应到更新的Objective-C的桥接报头字段。 - 大流士Miliauskas 3月11日在'15 5:47 

我发现手动创建桥接头文件,并选择默认的名称和位置之后,桥接头将被放置在项目目录,这是根目录下。

这需要设置以下值:目标> [您的应用目标]>构建设置>斯威夫特编译器-代码生成> Objective-C的桥接报头

$(SRCROOT)/$(PROJECT_NAME)/$(PROJECT_NAME)-Bridging-Header.h 

请注意,如果你的项目是一个迅速模块(框架),那么,在评论中指出,你可能更喜欢:

$(SRCROOT)/$(PROJECT_NAME)/$(SWIFT_MODULE_NAME)-Bridging-Header.h
分享编辑
 
1  
$(SRCROOT)/$(PROJECT_NAME)/$(SWIFT_MODULE_NAME)-Bridging-Hea‌​der.h将更加普遍:) - gaussblurinc 4月29日在'15十五点44分
1  
这应该是唯一的答案! -  卢卡·达万佐 11月2日在'15 14:15
1  
主席先生,你是一个生命的救星! -  themobileapper 04月28日在13:41

对于那些谁删除的桥接报头

我本来打算以相反的方式,因为大多数这里的其他答案。我一直在使用一个桥接报头前面,但我并不需要它了。之后,我从我的项目中删除它,我开始变得在问题中提到的错误。我执行以下步骤来解决我的问题。

  1. 转到目标> [您的应用目标]>构建设置>斯威夫特编译器-代码生成> Objective-C的桥接报头,并删除路径。(感谢@Donamite为理念。)
  2. 转到窗口>项 ​​目并删除导出数据文件夹。 在这里输入的形象描述
分享编辑
 
 
谢谢你,伟大的工作! -  约瑟夫·E 在23:38 06月08日

对我来说,它帮助我在桥接的头文件路径前面使用$(SRCROOT)/ $(PROJECT_NAME)/

分享编辑
 
1  
这是一个有效的答案。它不应该被下调。您可以使用$(SRCROOT)和$(PROJECT_NAME)为指导,以正确的答案到达,但你可能无法复制和粘贴每一个解决方案。 -  霍布斯给我滚 10月12日在'15 15时37分
 
在这个答案提供的解决方案实际上已经固定我的问题,谢谢SRINIVAS Padidala -  威尔逊Balderrama 2月7日在16:33

创建桥接报头手动档

首先,删除其中的Xcode创建桥接头文件。并选择您的项目转到>构建设置>搜索关键字。斯威夫特编译器 - 代码生成。点击Objective-C的桥接报头,删除该路径。现在,清理项目。

现在选择项目>窗口中的导航栏。选择项目并从那里删除您导出数据。

现在创建一个新的文件,选择来源,然后选择头文件并创建桥接头文件。文件名 ​​必须是你的项目名-桥接- Header.h,然后创建它

选择您的项目转到>构建设置>搜索关键字。斯威夫特编译器-代码生成。点击Objective-C的桥接报头,现在加入这个Objective-C的桥接报头的路径类似项目名称,桥接,Header.h

现在导入您的类放到桥的头文件,你可以很容易地编译代码。

您桥接头文件看起来是这样的,当你手动创建文件。

分享编辑
 

在斯威夫特项目添加桥文件。

步骤1.转到文件>使用Objective-C文件添加可可(对于临时用途)

在这里输入的形象描述

步骤2然后将下面的弹出会出现在这里输入的形象描述


大概的意思就是说,干掉文件的同时得干掉路径

相关文章推荐

Swift Cocoapods use_frameworks!(报error Bridging header 'XXXXXX-Bridging-Header.h' does not exist 错误)

cocoapods use_frameworks!问题 Switf编程的时候有些第三方库需要依赖OC的frameworks 但加了use_frameworks! 这个时候就会报错,说找不到头文件 ...

配置LNMP环境出现错误:Primary script unknown" while reading response header from upstream

今天下午搞了一个下午的LNMP环境搭建,N,M,P都安装成功了,静态页面也正常,就差最后一步了,挡的我好心累。【解决步骤】 1、使用wget从本机获取php页面,返回的是状态码是404. 2、查找...

"Primary script unknown" while reading response header from upstream, client: 192.168.1.102, server:

配置好了nginx和php,结果访问报这个错,经排查,是我的默认nginx配置文件解析php那里没有写root,我之前以为只要上面写有就可以,因此把php那里删掉了。 贴一下正确的配置文件:defa...

iOS Xcode7 ‘/Users/**/Framework/SDKs/PolymerPay/Library/mobStat/lib**SDK.a(**ForSDK.o)’does not con

转载

iOS 开发之使用CocoaPods更新第三方出现“HEADER_SEARCH_PATHS `OTHER_LDFLAGS`……”问题解决方案

今天在自己的项目中用CocoaPods引入第三方SDWebImage的时候,出现了问题。当更新完毕后,在终端没太注意这个问题的提示,就直接使用SDWebImage了,在使用的时候一些方法的提示和头文件...

【代码笔记】iOS-3个section,每个都有header.

一,效果图:   二,工程目录。     三,代码   RootViewController.h   #import @interface RootViewContro...

iOS UICollectionView学习之二,纯代码实现布局,纯代码实现添加Section Header头部视图和 Section Footer尾部视图

iOS UICollectionView学习之二,纯代码实现布局,纯代码实现添加头部视图跟尾部视图,Header和footer 1、首先看下整个Demo的整体结构:如下图 2、直接上代码 1....

iOS Header File 和 PCH File的区别

注意:个人理解,如有错误请指正。 首先说说二者的区别:PCH File :里面默认的是使用在整个项目中的可以访问(全局变量),一般存放一些全局变量(整个项目都用得上的宏),包括在所有编译单元...

iOS学习之TableView02带Header

文章主要都是自己学习的一些笔记,不是专门写给别人来看的,如果有不对的地方,勿喷. 效果图: .h代码 #import @interface ViewController : UIView...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS <unknown header '/Users/app/Desktop/WiseAppawo/WiseAppVTwo/WiseAppVTwo-Bridging-Header.h' does
举报原因:
原因补充:

(最多只允许输入30个字)