Objective-C中的Swift枚举关联值 有没有办法在Objective-C中使用具有关联值的新Swift3枚举 如果我开发了一个库并希望为Swift3用户提供方便的API,是否有方法在Objective-C中声明/桥接具有关联值的Swift3枚举

Objective-C中的Swift枚举关联值 有没有办法在Objective-C中使用具有关联值的新Swift3枚举 如果我开发了一个库并希望为Swift3用户提供方便的API,是否有方法在Objective-C中声明/桥接具有关联值的Swift3枚举,objective-c,swift,enums,swift3,Objective C,Swift,Enums,Swift3,恐怕这是不可能的,苹果有一个Swift类型兼容性列表,其中明确排除了Swift中定义的枚举,而不包含Int原始值类型 我就是这么做的: 在Swift类中创建了枚举 enum Origin { case Search(searchTerm: String, searchResultsPageNum: Int) case Discovery(pageNum: Int) } 然后在我的类中,创建枚举属性和函数(对目标C可见)来设置和获取枚举属性的值 @objc class GameS

恐怕这是不可能的,苹果有一个Swift类型兼容性列表,其中明确排除了Swift中定义的枚举,而不包含
Int
原始值类型

我就是这么做的:

在Swift类中创建了枚举

enum Origin {
    case Search(searchTerm: String, searchResultsPageNum: Int)
    case Discovery(pageNum: Int)
}
然后在我的类中,创建枚举属性和函数(对目标C可见)来设置和获取枚举属性的值

@objc class GameSession: NSObject
{
    ...

    var gameOrigin: Origin?

    ...

    let originStr = "origin"
    let notSpecified = "Not Specified"

    @objc func getOrigin() -> NSDictionary
    {
        guard let origin = gameOrigin else {
            return [originStr: notSpecified]
        }

        switch origin {
        case .Search(let searchTerm, let searchResultsPageNum):
            return ["searchTerm": searchTerm, "searchResultsPageNum": "\(searchResultsPageNum)"]
        case .Discovery(let pageNum)
            return ["pageNum": pageNum]
        default:
            return [originStr: notSpecified]
        }
    }

    @objc func setSearchOriginWith(searchTerm: String, searchResultsPageNum: Int, filtered:Bool)
    {
        self.gameOrigin = Origin.Search(searchTerm: searchTerm, searchResultsPageNum: searchResultsPageNum, filtered: filtered)
    }

    @objc func setDiscoveryOriginWith(pageNum: Int)
    {
        self.gameOrigin = Origin.Discovery(pageNum: pageNum)
    }

}

你能列出一些可能的替代方案吗?