未定义的符号Swift.UnsafeMutableBufferPointer

时间:2016-10-20 10:09:49

标签: ios swift xcode swift3 xcode8

下载Xcode 8并迁移到Swift 3后,我无法再归档项目。同时,项目建立没有任何问题。

我得到的错误:

  

架构armv7的未定义符号:
  “Swift.UnsafeMutableBufferPointer。(subscript.materializeForSet:   (Swift.Int) - > A)。(闭包#1)“,引自:         泛型专业化的函数签名专业化      同   Swift.UnsafeMutableBufferPointer:   Swift和Swift中的Swift.MutableCollection   Swift.UnsafeMutableBufferPointer:   Swift中的Swift.RandomAccessCollection> of Swift._siftDown(inout A,   index:A.Index,subRange:Swift.Range,by:inout   (A.Iterator.Element,A.Iterator.Element) - > Swift.Bool) - > ()in   OrderCoordinator.o         泛型专业化的函数签名专业化      同   Swift.UnsafeMutableBufferPointer:   Swift和Swift中的Swift.MutableCollection   Swift.UnsafeMutableBufferPointer:   Swift中的Swift.RandomAccessCollection> of Swift._heapSort(inout A,   subRange:Swift.Range,by:inout(A.Iterator.Element,   A.Iterator.Element) - > Swift.Bool) - > ()在OrderCoordinator.o中         泛型专业化的函数签名专业化      同   Swift.UnsafeMutableBufferPointer:   Swift和Swift中的Swift.MutableCollection   Swift.UnsafeMutableBufferPointer:   Swift中的Swift.RandomAccessCollection> of Swift._partition(inout A,   subRange:Swift.Range,by:inout(A.Iterator.Element,   A.Iterator.Element) - > Swift.Bool) - >在OrderCoordinator.o中的A.Index   ld:找不到架构armv7 clang的符号:错误:链接器   命令失败,退出代码为1(使用-v查看调用)

通过在以下函数中注释数组排序代码,我能够摆脱错误:

func didFinishWithResults(_ results: [PhotoProcessorResult]) {
    guard let album = albumService.currentAlbum else { return }
    //let sortedResults = results.sorted(by: { $0.fileIndex < $1.fileIndex })
    let updateItems = zip(sortedResults, album.assetItems).map { (photoProcessorResult, assetItem) -> UpdateItem in
        UpdateItem(path: photoProcessorResult.filePath, position: photoProcessorResult.fileIndex, isCover: assetItem.isCover)
    }
    albumService.updateAlbumWithItems(updateItems) { (success, errorDescription) in
        if success {
            self.handleAlbumUpdate()
        } else {
            self.showFailureAlert(errorDescription) {
                self.startProcessingAlbum(self.albumService.currentAlbum)
            }
        }
    }
}

虽然我通过使用NSArray对数据进行排序来解决问题,但我不喜欢这种解决方案。

对任何建议都会感激不尽。

3 个答案:

答案 0 :(得分:2)

由于它编译我不认为你的代码有任何问题。它说“架构armv7的未定义符号”并且未能存档的事实告诉我你的项目正在发生一些事情,但遗憾的是有很多方法可以解决这个问题。 arm7是iphone 5所以你的项目可能只适用于arm64。尝试这里提到的解决方案:Undefined symbols for architecture armv7

答案 1 :(得分:1)

如果此问题仅限于此行:

let sortedResults = results.sorted(by: { $0.fileIndex < $1.fileIndex })

您可以更改为:

let sortedResults = results.sorted { (first, second) -> Bool in
    return first.fileIndex < second.fileIndex
}

它解决了你的问题吗?

答案 2 :(得分:1)

更新到XCode 8.1后问题消失了。 谢谢大家:)