更新到 Xcode 10.2/Swift 5 后无法构建 macOS 项目
Can't build macOS project after updating to Xcode 10.2/Swift 5
我的项目在更新之前构建良好Xcode。
但是现在,我无法再构建该项目。使用 Swift 5 时,构建项目永远不会完成。它在 "Building 70 of 100 tasks" 处停止并且永远不会完成。这些数字也不总是相同的,但它永远不会完成构建。
如果我尝试使用 Xcode 将我的项目从 Swift 4.2 转换为 Swift 5,它同样无法完成转换。
如果我尝试更改工具链以使用 Swift 4.2.1 发布工具链,代码编译成功但我在 运行 时间立即遇到此崩溃:
dyld: Symbol not found: _$SBOWV
Referenced from: /Users/compc/Library/Developer/Xcode/DerivedData/Swift_Coder-hczsehpbafcwkfgwyameucznmhsp/Build/Products/Debug/Swift Coder.app/Contents/MacOS/../Frameworks/SavannaKit.framework/Versions/A/SavannaKit
Expected in: /usr/lib/swift/libswiftCore.dylib
in /Users/compc/Library/Developer/Xcode/DerivedData/Swift_Coder-hczsehpbafcwkfgwyameucznmhsp/Build/Products/Debug/Swift Coder.app/Contents/MacOS/../Frameworks/SavannaKit.framework/Versions/A/SavannaKit
我试过清理项目并删除派生数据,但似乎都不起作用。
如果我使用 Xcode 10.1.
,项目将继续构建并且 运行 完全没问题
您的项目是否包含第三方库?如果是这样,请尝试找出哪个已过时。尝试在没有这个库的情况下构建项目,我完全确定其中一些已经过时了。您可能还想将 swift 语言版本设置为旧版本。 Select 目标,转到构建设置> Swift 语言版本
请删除派生数据,
如果您处于工作区环境中,则可以转到文件 > 工作区设置;对于常规项目环境,可以转到文件 > 项目设置。然后单击派生数据部分下的灰色小箭头和 select 您的项目文件夹以将其删除。
如果您有 Pods 则再次分解并重新安装所有 pod 文件。
希望这对你有用!
我的一些代码有问题,涉及以自定义方式将 ClosedRange
类型扩展到 Encodable
和 Decodable
。在Swift 5中,当Bound
为Encodable
和Decodable
时,ClosedRange
已经符合Encodable
和Decodable
,但是编译器没有给我关于冗余一致性的错误,而是挂在编译上。
在我修改我的代码以使用新的 Swift 5 协议一致性之后,它编译得很好。然而,花了很长时间才将问题缩小到这一点。在我看来,这是 Swift 编译器中的一个错误,因为编译器挂在 Playground 或命令行中,即使在不同的 Mac.
上也是如此
禁用 iCloud。
问题是桌面和icloud不一致造成的!
花了 24 小时试图找出工作区在启动时冻结的原因。
我的项目在更新之前构建良好Xcode。
但是现在,我无法再构建该项目。使用 Swift 5 时,构建项目永远不会完成。它在 "Building 70 of 100 tasks" 处停止并且永远不会完成。这些数字也不总是相同的,但它永远不会完成构建。
如果我尝试使用 Xcode 将我的项目从 Swift 4.2 转换为 Swift 5,它同样无法完成转换。
如果我尝试更改工具链以使用 Swift 4.2.1 发布工具链,代码编译成功但我在 运行 时间立即遇到此崩溃:
dyld: Symbol not found: _$SBOWV
Referenced from: /Users/compc/Library/Developer/Xcode/DerivedData/Swift_Coder-hczsehpbafcwkfgwyameucznmhsp/Build/Products/Debug/Swift Coder.app/Contents/MacOS/../Frameworks/SavannaKit.framework/Versions/A/SavannaKit
Expected in: /usr/lib/swift/libswiftCore.dylib
in /Users/compc/Library/Developer/Xcode/DerivedData/Swift_Coder-hczsehpbafcwkfgwyameucznmhsp/Build/Products/Debug/Swift Coder.app/Contents/MacOS/../Frameworks/SavannaKit.framework/Versions/A/SavannaKit
我试过清理项目并删除派生数据,但似乎都不起作用。
如果我使用 Xcode 10.1.
,项目将继续构建并且 运行 完全没问题您的项目是否包含第三方库?如果是这样,请尝试找出哪个已过时。尝试在没有这个库的情况下构建项目,我完全确定其中一些已经过时了。您可能还想将 swift 语言版本设置为旧版本。 Select 目标,转到构建设置> Swift 语言版本
请删除派生数据,
如果您处于工作区环境中,则可以转到文件 > 工作区设置;对于常规项目环境,可以转到文件 > 项目设置。然后单击派生数据部分下的灰色小箭头和 select 您的项目文件夹以将其删除。
如果您有 Pods 则再次分解并重新安装所有 pod 文件。
希望这对你有用!
我的一些代码有问题,涉及以自定义方式将 ClosedRange
类型扩展到 Encodable
和 Decodable
。在Swift 5中,当Bound
为Encodable
和Decodable
时,ClosedRange
已经符合Encodable
和Decodable
,但是编译器没有给我关于冗余一致性的错误,而是挂在编译上。
在我修改我的代码以使用新的 Swift 5 协议一致性之后,它编译得很好。然而,花了很长时间才将问题缩小到这一点。在我看来,这是 Swift 编译器中的一个错误,因为编译器挂在 Playground 或命令行中,即使在不同的 Mac.
上也是如此禁用 iCloud。
问题是桌面和icloud不一致造成的!
花了 24 小时试图找出工作区在启动时冻结的原因。