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然后将下面的弹出会出现在这里输入的形象描述


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

160129关于xcode 7中object c与swift相互引用的问题。

一,在swift文件 中引用object c文件。        在swift文件中创建一个object c类TestSwift2OC,在弹出对话框(Would you like to config...
  • lmyuanhang
  • lmyuanhang
  • 2016年01月29日 17:16
  • 1639

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

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

iOS Cocoapods安装、使用

1.更新ruby源: gem sources -l #(查看当前ruby的源) gem sources --remove https://rubygems.org/ #(移除当前ruby的源) gem...
  • dongyangTan
  • dongyangTan
  • 2016年12月06日 14:38
  • 143

iOS开发--HTTP Header 详解

HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议。HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传...
  • zzzzzdddddxxxxx
  • zzzzzdddddxxxxx
  • 2016年11月21日 17:54
  • 1914

iOS 添加预加载文件(预编译)Header

很久才创建一个新工程,总忘怎么添加设置预加载文件。 1.newFile 然后点击下面Header File。 2. 起个名 随意,这里叫他prefixHeader 3.路径 点击你的工...
  • aoliuer117
  • aoliuer117
  • 2016年11月08日 15:01
  • 494

野鸟装备2.0版本审核被拒2次的原因及解决方案

这次真悲催,连续被找了两次。第一次:10.6 - Apple and our customers place a high value on simple, refined, creative, we...
  • a345017062
  • a345017062
  • 2015年12月04日 11:07
  • 4919

iOS开发中HTTP 常用 Header 讲解

1、HTTP请求协议名://主机名:端口号/资源URI 2、request headerHost, 请求头,标名请求主机器名,可为IP也可为域名,http1.1后强制使用,用此请求信息,可在服务...
  • muzhenhua
  • muzhenhua
  • 2015年07月23日 14:02
  • 2172

动态链接库的建立(opencv haar应用方面建立dll遇到的问题)

一、dll的建立(vs2008) 1、新建win32工程 2、下一步,应用类型选dll;附加条件:空的工程。 3、分别建立xx.h,内容为: #include "cv.h" #include ...
  • t710smgtwoshima
  • t710smgtwoshima
  • 2013年04月03日 15:15
  • 3584

soap消息的传递和处理(三)——包含header和异常的处理

对于IMyService做如下修改: package com.smile.service; import java.util.List; import javax.jws.WebParam; i...
  • ps_zhanglei
  • ps_zhanglei
  • 2014年12月02日 11:17
  • 913

使用jqMobi开发app基础:定义header

定义头部官方说有三种,这一种是公共的,两种自定义的。我经过测试,实际上还有第四种。       1定义公共的header,     也就是所有panel默认的header,需要在div id="afu...
  • xuexiaodong2009
  • xuexiaodong2009
  • 2014年01月13日 09:00
  • 7165
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS <unknown header '/Users/app/Desktop/WiseAppawo/WiseAppVTwo/WiseAppVTwo-Bridging-Header.h' does
举报原因:
原因补充:

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