下载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对数据进行排序来解决问题,但我不喜欢这种解决方案。
对任何建议都会感激不尽。
答案 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后问题消失了。 谢谢大家:)