首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIImage.resize (Xcode11)导致的架构arm64的未定义符号

UIImage.resize (Xcode11)导致的架构arm64的未定义符号
EN

Stack Overflow用户
提问于 2019-07-24 23:11:55
回答 1查看 306关注 0票数 0

当尝试在Bitrise中构建一个应用程序(使用fastlane)时,我得到了以下错误:

代码语言:javascript
复制
Undefined symbols for architecture arm64
> Symbol: (extension in Swift):Swift.Sequence< where A.Element: Swift.Comparable>.max() -> A.Element?
> Referenced from: (extension in myapp):__C.UIImage.resize(maxDimension: Swift.Double) -> __C.UIImage in UIImage+Resize.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我不知道这里到底出了什么问题。在本地,构建和归档是成功的。我在stackoverflow上尝试了一些类似问题的解决方案,但他们指出了一个不同的问题。或者我不知道哪个库可能没有正确链接。

更新:

函数resize是我自己添加的UIImage扩展:

代码语言:javascript
复制
import Foundation

extension UIImage {
    func resize(maxDimension: Double) -> UIImage {
        let maxCG = CGFloat(maxDimension)
        if [self.size.width, self.size.height].max()! < maxCG {
            return self
        }
        let factor = self.size.width > self.size.height ? maxCG / self.size.width :  maxCG / self.size.height
        let canvasSize = CGSize(width: self.size.width * factor, height: self.size.height * factor)
        UIGraphicsBeginImageContextWithOptions(canvasSize, false, self.scale)
        defer { UIGraphicsEndImageContext() }
        self.draw(in: CGRect(origin: .zero, size: canvasSize))
        return UIGraphicsGetImageFromCurrentImageContext()!
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-15 17:06:19

解决方案:问题是代码的这一部分:

代码语言:javascript
复制
[self.size.width, self.size.height].max()!

我将其替换为:

代码语言:javascript
复制
let referenceLength = self.size.width >= self.size.height ? self.size.width : self.size.height;

现在它起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57186142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档