use*_*952 109 xcode objective-c ios swift
我想在Objective-C项目中开始使用Swift.所以我添加了一个快速的类:
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
注意:在"Build Settings-> Swift Compiler - Code Generation-> Objective-C Briding Header"下设置为MyProjectName-Bridging-Header.h
我该怎么做才能解决这个问题?
任何帮助深表感谢.
编辑:桥接头文件:#if defined(__ has_include)&& __has_include()#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
Jam*_*mey 182
如果桥接文件与其他类创建的级别相同,则可能需要添加相对路径,如这些图片所示.请注意,桥接文件创建的级别与其他类相同:

我在Build Settings中正确输入了名称,

但编译器找不到该文件.

因此,如果我从项目的根目录添加相对路径(即我添加./ProjectName/BridgerFileName.h),

现在它编译,我可以在Objective C类中调用一个方法:

Don*_*ghn 71
我发现在手动创建桥接头文件并选择默认名称和位置后,桥接头将放在项目目录中,该目录位于根目录下.
这需要以下设置值:Targets> [Your App Target]> Build Settings> Swift Compiler - Code Generation> Objective-C Bridging Header:
$(SRCROOT)/$(PROJECT_NAME)/$(PROJECT_NAME)-Bridging-Header.h 
请注意,如果您的项目是一个快速模块(框架),那么,如评论中所指出的,您可能更喜欢:
$(SRCROOT)/$(PROJECT_NAME)/$(SWIFT_MODULE_NAME)-Bridging-Header.h
iOS*_*iOS 18
在Swift 4.1中
您的项目没有bridging-Header.h文件,但您的项目有该路径.为此,您需要删除该路径...
转到目标文件并选择Build Settings,----> Swift Compiler  -  General,然后删除bridging-Header.h.按照以下屏幕截图....
删除Swift Compiler - General中的bridging-Header.h文件
现在你有这样的......
Man*_*ngh 13
在Swift项目中添加Bridge文件.
步骤1.转到文件>使用Objective-C文件添加Cocoa(用于临时目的)
现在按Create Bridging Header Button
DONE 
 你会得到多桥文件捆绑
THANKS
Vis*_*han 12
这些是创建Bridging标头的步骤.
文件 - >新建 - > iOS->头文件,将桥接文件名称设置为"yourProjectName-Bridging-Header.h"
Build-Settings-> Objective-C Bridging Header,只需将桥接头文件名称设置为"ProjectName-Bridging-Header.h"
注意:桥接头文件应位于".xcodeproj"文件所在项目的主根文件夹中.如果没有将Bridging头文件移动到项目的根文件夹.这样Xcode就能够访问桥文件.
构建项目,并在Bridging标头中导入必要的文件.
对我来说,它有助于$(SRCROOT)在我的Objective-C桥接标题路径前使用.
$(SRCROOT)/swiftLibraries/swiftLibraries-Bridging-Header.h
请按照以下步骤操作:
也许这两件事有助于解决您的问题.
以下对我有用:
| 归档时间: | 
 | 
| 查看次数: | 76010 次 | 
| 最近记录: |