objective-c - 不同目标中的两个同名 Objective C 文件,由 Swift 类使用

标签 objective-c xcode swift

情况如下:我有两个目标(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/

相关文章:

ios - 如何修复 Xcode 错误 : Could not locate device support files on iPhone with Xcode

iphone - 如何在 Xcode 的框架中进行调试?

ios - 确认命令未找到错误

swift - 在键入时关闭 Xcode 的未使用变量警告

java - Java 中是否有 libxml2.HTMLparser.htmlSAXParseDoc 的等效项?

objective-c - 尽管 setNeedsDisplay,NSCollectionView 子类在拖动 session 期间不会调用drawRect

ios - 如何防止用户同时从图片库中选择和交换图片,以免进入编辑 View ?

objective-c - 正确使用 NSURLConnection

ios - 如何隐藏导航栏后退按钮中的后退箭头?

ios - Xcode 9.2 陷入编译 Swift 3.2 项目的困境