在Swift中使用类本身的协议中的类声明的枚举?

时间:2015-03-04 08:58:13

标签: swift swift-protocols

我们如何在Swift中执行前向声明?

我在类之前声明了一个协议,但协议需要使用在类之前声明的枚举(recordType):

protocol iCloudDelegate {
    func errorUpdating(error: NSError)
    func iCloudUpdated()
    func iCloudFetched(recordType: recordType)
}

class iCloud {

    enum recordType : String {
        case Payment = "Payment"
        case Subtype = "Subtype"
        case Types = "Type"
        case Entry = "Entry"
        case Repeat = "Repeat"
    }
}

现在,Swift编译器抱怨使用未声明的类型'recordType'错误。在Objective-C这里我们会提出某种前瞻性声明,那么Swift呢?

作为旁注问题,你看到上面我必须声明case Types而不是Type,因为“Type”显然是枚举的保留case-word。有没有办法克服这个问题? (除了我当然更改名称)

1 个答案:

答案 0 :(得分:4)

要访问在其他类型(嵌套类型)中声明的类型,请在嵌套类型之前输入周围类型的名称:

func iCloudFetched(recordType: iCloud.recordType)

有关Swift中嵌套类型的更多信息:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/NestedTypes.html