两个在不同目标中具有相同名称的Objective C文件,由Swift类

时间:2016-02-21 21:55:25

标签: 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的类/头,这导致以下错误: “Hello”类型的值没有成员'propertyOnlyAvailableInTargetB'

有谁知道如何告诉swift类使用正确目标中正确的类/标题?为什么Xcode喜欢使用目标A的Hello.m和Hello.h而不是B?

我尝试将Build Settings中的“Header Search Paths”设置为项目中的特定文件夹,并将“Use Header Maps”设置为false。设置此标志后,我收到错误“无法导入桥接头... Bridging-Header.h”,因为文件夹结构如下所示:

项目     

            FolderA
        
          Hello.m
          Hello.h
          转职Header.h
          

        FolderB中     
          Hello.m
          Hello.h
          Consumer.swift
          
        

任何答案都将不胜感激:)谢谢!

1 个答案:

答案 0 :(得分:1)

您的文件系统层次结构和Xcode项目层次结构应如下所示:

Project
   |-- Bridging-Header.h
   |
   |-- FolderA
   |      |-- Hello.h
   |      |-- Hello.m
   |
   |-- FolderB
          |-- Hello.h
          |-- Hello.m

将文件导入桥接标头时,请指定文件夹名称:

#import "FolderB/Hello.h"

如果移动桥接标头,则需要更新项目设置以指向新路径。打开构建设置,搜索“桥接”,然后更新路径。