未定义的符号 Swift.UnsafeMutableBufferPointer
Posted
技术标签:
【中文标题】未定义的符号 Swift.UnsafeMutableBufferPointer【英文标题】:Undefined symbols Swift.UnsafeMutableBufferPointer 【发布时间】:2016-10-20 10:09:48 【问题描述】:下载 Xcode 8 并迁移到 Swift 3 后,我无法再归档项目。同时,项目的构建没有任何问题。
我得到的错误:
架构 armv7 的未定义符号: “Swift.UnsafeMutableBufferPointer.(subscript.materializeForSet : (Swift.Int) -> A).(closure #1)",引用自: 泛型特化的函数签名特化 和 Swift.UnsafeMutableBufferPointer : Swift 中的 Swift.MutableCollection 和 Swift.UnsafeMutableBufferPointer : Swift._siftDown 的 Swift.RandomAccessCollection in Swift> (inout A, 索引:A.Index,子范围:Swift.Range,作者:inout (A.Iterator.Element, A.Iterator.Element) -> Swift.Bool) -> () 在 OrderCoordinator.o 泛型特化的函数签名特化 和 Swift.UnsafeMutableBufferPointer : Swift 中的 Swift.MutableCollection 和 Swift.UnsafeMutableBufferPointer : Swift._heapSort 的 Swift.RandomAccessCollection in Swift> (inout A, subRange : Swift.Range, by : inout (A.Iterator.Element, A.Iterator.Element) -> Swift.Bool) -> () 在 OrderCoordinator.o 泛型特化的函数签名特化 和 Swift.UnsafeMutableBufferPointer : Swift 中的 Swift.MutableCollection 和 Swift.UnsafeMutableBufferPointer : Swift._partition 中的 Swift.RandomAccessCollection (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 对数据进行排序来解决问题,但我不喜欢这种解决方案。
将不胜感激任何建议。
【问题讨论】:
在更改之前发布您的代码 【参考方案1】:自从它编译后,我认为您的代码没有任何问题。它说“架构 armv7 的未定义符号”并且无法存档的事实告诉我,您的项目正在发生一些事情,但不幸的是,有很多方法会导致这个问题。 arm7 是 iphone 5,因此您的项目可能仅针对 arm64 正确设置。试试这里提到的解决方案:Undefined symbols for architecture armv7
【讨论】:
【参考方案2】:如果这里只是这一行的问题:
let sortedResults = results.sorted(by: $0.fileIndex < $1.fileIndex )
你可以改成它:
let sortedResults = results.sorted (first, second) -> Bool in
return first.fileIndex < second.fileIndex
它解决了你的问题吗?
【讨论】:
我有完全相同的问题,这对我不起作用。普通的array.sort()
也没有(我的只是Float
s 的数组)【参考方案3】:
更新到 XCode 8.1 后问题消失。 谢谢大家:)
【讨论】:
以上是关于未定义的符号 Swift.UnsafeMutableBufferPointer的主要内容,如果未能解决你的问题,请参考以下文章