相关疑难解决方法(0)

从泛型函数中获取enum中的rawValue

2015年8月28日更新: 这将在Swift 2中解决

请参阅Swift编译器开发人员的Twitter响应

2015年10月23日更新:使用Swift 2泛型,您仍然无法获得rawValue.你可以得到相关的价值.

原始问题:

我有一些用swift编写的通用反射代码.在该代码中,我无法获取基于枚举的属性的值.问题归结为我无法执行.rawValue属性类型的属性Any.Swift反射代码将返回枚举值作为类型Any.那么我怎样才能从Any到AnyObject,它是枚举的rawValue.

到目前为止,我发现的唯一解决方法是使用协议扩展所有枚举.您可以在下面看到使用此变通方法的单元测试.

有没有办法解决这个问题,而无需在原始枚举中添加代码?

对于我的反射代码,我需要getRawValue方法签名保持不变.

class WorkaroundsTests: XCTestCase {
    func testEnumToRaw() {
        let test1 = getRawValue(MyEnumOne.OK)
        XCTAssertTrue(test1 == "OK", "Could nog get the rawvalue using a generic function")
        let test2 = getRawValue(MyEnumTwo.OK)
        XCTAssertTrue(test2 == "1", "Could nog get the rawvalue using a generic function")
        let test3 = getRawValue(MyEnumThree.OK)
        XCTAssertTrue(test3 == "1", "Could nog get the rawvalue using a generic function")
    } …
Run Code Online (Sandbox Code Playgroud)

reflection enums swift

9
推荐指数
1
解决办法
3500
查看次数

标签 统计

enums ×1

reflection ×1

swift ×1