我正在努力将其他人从Obj C编写的iOS项目转换为Swift。
Obj C表单中的项目构建并运行良好,并显示它在x86_64架构下。
当我尝试在Swift中构建时,我收到错误'架构x86_64的未定义符号'。消息是:
Undefined symbols for architecture x86_64:
"_DRCollectionViewTableLayoutSupplementaryViewColumnHeader", referenced from:
__TFC13CVTableLayout14ViewController11viewDidLoadfS0_FT_T_ in ViewController.o
__TFC13CVTableLayout14ViewController32collectionViewTableLayoutManagerfS0_FTGSQCSo34DRCollectionViewTableLayoutManager_14collectionViewGSQCSo16UICollectionView_19headerViewForColumnSu9indexPathGSQCSo11NSIndexPath__GSQCSo24UICollectionReusableView_ in ViewController.o
引用的值在DRCollectionViewTableLayout.h中定义,在#import和@class行之间定义,如下所示:
/**
* Supplementary View kind for column headers
*/
static NSString * const DRCollectionViewTableLayoutSupplementaryViewColumnHeader = @"DRCollectionViewTableLayoutSupplementaryViewColumnHeader";
/**
* Supplementary View kind for row headers
*/
static NSString * const DRCollectionViewTableLayoutSupplementaryViewRowHeader = @"DRCollectionViewTableLayoutSupplementaryViewRowHeader";
我的桥接头文件就位了,看起来像这样:
#import "DRCollectionViewTableLayout.h"
#import "DRCollectionViewTableLayoutManager.h"
我的viewDidLoad引用了这些常量如下:
override func viewDidLoad() {
super.viewDidLoad()
collectionView.registerClass(UICollectionReusableView.self, forSupplementaryViewOfKind: DRCollectionViewTableLayoutSupplementaryViewColumnHeader, withReuseIdentifier: collectionViewHeaderIdentifier)
collectionView.registerClass(UICollectionReusableView.self, forSupplementaryViewOfKind: DRCollectionViewTableLayoutSupplementaryViewRowHeader, withReuseIdentifier: collectionViewHeaderIdentifier)
collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: collectionViewCellIdentifier)
let collectionViewLayout = DRCollectionViewTableLayout(delegate: self.collectionManager)
collectionViewLayout.horizontalSpacing = 5.0
collectionViewLayout.verticalSpacing = 5.0
collectionView.collectionViewLayout = collectionViewLayout
collectionView.dataSource = collectionManager
collectionView.delegate = collectionManager
}
我的.m文件和.swift在目标中。
我删除了DerivedData。
我正在使用xcode 6.3.2
为什么它不会链接的任何想法?
答案 0 :(得分:0)
如果我重新声明swift文件中的常量,问题就会消失。我认为问题是"静态"在Obj C文件中使用。所以我把它添加到我的视图控制器。我不确定这是最好的方法,但经过两天的尝试,我会选择它:
let DRCollectionViewTableLayoutSupplementaryViewColumnHeader = "DRCollectionViewTableLayoutSupplementaryViewColumnHeader"
let DRCollectionViewTableLayoutSupplementaryViewRowHeader = "DRCollectionViewTableLayoutSupplementaryViewRowHeader"