Swift CustomReflectable 不适用于分离的静态库

标签 swift reflection

如果 Swift CustomReflectable 在单独的静态库中的单独文件中实现,则它不起作用。

//  BBB.swift
public struct BBB {
    public var xcv = 344
    public init() {}
}

//  BBB.mirror.swift
extension BBB: CustomReflectable {}
public extension BBB {
    var customMirror: Mirror {
        return Mirror(
            self,
            children: [
                "xxx": 342,
                "www": 999])
    }
}

如何让它发挥作用?

最佳答案

根据我的经验,对于 Xcode 10 和 11 Beta 2,如果出现以下情况,Swift CustomReflectable 将无法工作: - 它位于单独的静态库中。 - 它是使用扩展实现的。

您可以尝试像这样将协议(protocol)构造移动到类型的主文件中,现在就可以工作了。

// Put protocol conformation here!
public struct BBB: CustomReflectable {
    public var xcv = 344
    public init() {}
}
public extension BBB {
    var customMirror: Mirror {
        return Mirror(
            self,
            children: [
                "xxx": 342,
                "www": 999])
    }
}

我不知道为什么,但这有效。

关于Swift CustomReflectable 不适用于分离的静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56836458/

相关文章:

C# 反射代码不工作;

php - PHP 反射获取动态实例变量失败

ios - 收到 Push 崩溃时发布 NSNotification

arrays - 检索快照时,如何使用数组中的最后一个值作为 .child() 的路径?

ios - 将 iOS 9 今天的扩展程序转换为 iOS 10 的大小问题

.net - 有人创建了一个开源动态 .NET 类来公开另一个类上的私有(private)函数/属性吗?

c# - 使用表达式通过字符串路径更新嵌套属性值

python 反射

ios - 从水平 UIScrollView 中删除额外的底部填充

ios - 展开 UITableView 单元格文本