A模块
我有一个模块(A),它有两个结构体。
- 一种是直接在代码中启动的颜色。
- 一个具有从资源加载的颜色。
public struct CodeColor {
public init() { }
public let value = SwiftUI.Color(#colorLiteral(red: 0.8549019694, green: 0.250980407, blue: 0.4784313738, alpha: 1))
}
public struct AssetColor {
public init() { }
public let value = SwiftUI.Color("Legacy/Material/Gold", bundle: .module)
}
预览效果非常好:
B模块
第二个模块(B)应该使用前一个模块(A)作为从以下位置加载颜色的依赖项:
import A
public struct CodeColor {
public init() { }
public var value: SwiftUI.Color { A.CodeColor().value }
}
public struct AssetColor {
public init() { }
public var value: SwiftUI.Color { A.AssetColor().value }
}
但一旦它触及模块(A)中的资源,预览就会崩溃:
🛑#错误:
无法在此文件中预览。无法更新预览。
RemoteHumanReadableError: Failed to update preview.
The preview process appears to have crashed.
Error encountered when sending 'previewInstances' message to agent.
==================================
| RemoteHumanReadableError: The operation couldn’t be completed. (BSServiceConnectionErrorDomain error 3.)
|
| BSServiceConnectionErrorDomain (3):
| ==BSErrorCodeDescription: OperationFailed
那是为什么呢?
**注意:**奇怪的是,如果B预览代码是在实际的应用程序(而不是另一个软件包)中,它就可以工作
2条答案
按热度按时间xt0899hw1#
我在开发者论坛找到了一个解决方案:
https://developer.apple.com/forums/thread/664295?login=true#reply-to-this-question
此解决方案适用于本地包。您定义
如果你在GitHub上有你的软件包并远程获取它,你不能定义本地软件包,你必须稍微修改它:
下面是一个完整的实现示例,您必须将其与资源一起放入包中:
现在,您可以从包A访问包B中的资源,如下所示:
c3frrgcw2#
这个变通方案在Xcode 14.2中对我很有效