情况如下:我有两个目标(A 和 B),它们包含一个名称相同但实现不同的类(我们称这些类为 Hello.m 和 Hello.h)。所以:
目标A包含Hello.m和Hello.h
目标 B 包含 Hello.m 和 Hello.h(不同的实现具有不同的属性)
现在我在目标 B 中有一个名为 Consumer.swift 的 swift 类。这个类需要使用目标 B 的 Hello.m 和 Hello.h。但是不知何故 Xcode 试图包含目标 A 的类/ header ,这会导致以下错误: “Hello”类型的值没有成员“propertyOnlyAvailableInTargetB”
有谁知道我如何告诉 swift 类使用来自正确目标的正确类/ header ?为什么 Xcode 喜欢使用目标 A 的 Hello.m 和 Hello.h 而不是 B?
我尝试将build设置中的“Header Search Paths”设置为项目中的特定文件夹,并将“Use Header Maps”设置为 false。设置此标志后,我收到错误“无法导入桥接 header ...Bridging-Header.h”,因为文件夹结构如下所示:
项目
-
文件夹A
-
你好.m
你好.h
桥接头.h
资料夹B
-
你好.m
你好.h
消费者.swift
如有任何答案,我们将不胜感激 :) 谢谢!
最佳答案
您的文件系统层次结构和 Xcode 项目层次结构应如下所示:
Project
|-- Bridging-Header.h
|
|-- FolderA
| |-- Hello.h
| |-- Hello.m
|
|-- FolderB
|-- Hello.h
|-- Hello.m
导入文件到桥接头时,指定文件夹名称:
#import "FolderB/Hello.h"
如果移动桥接头,则需要更新项目设置以指向新路径。打开build设置,搜索“桥接”,然后更新路径。
关于objective-c - 不同目标中的两个同名 Objective C 文件,由 Swift 类使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35542620/