2

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 コンパイラはUse of undeclared type 'recordType'エラーで不平を言っています。ここでの Objective-C では、ある種の前方宣言を行いますが、Swift はどうでしょうか?

補足的な質問として、「Type」は明らかに列挙型の予約済みのケース ワードであるため、上記では Type ではなくケース タイプを宣言する必要があったことがわかります。これを克服する方法はありますか?(もちろん、私がしたように名前を変更することは別として)

4

1 に答える 1

4

別の型 (ネストされた型) 内で宣言された型にアクセスするには、ネストされた型の前に周囲の型の名前を置きます。

func iCloudFetched(recordType: iCloud.recordType)

Swift のネストされた型の詳細については、https ://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/NestedTypes.html を参照してください。

于 2015-03-04T09:40:38.320 に答える