web-dev-qa-db-ja.com

Swiftプロトコルに準拠する拡張機能

プロトコルに準拠する拡張機能をSwiftで作成するのに問題があります。

Objective-Cでは、プロトコルに準拠したカテゴリを作成できます。

SomeProtocol.h

@protocol SomeProtocol
...
@end

IView + CategoryName

#import SomeProtocol.h
@interface UIView (CategoryName) <SomeProtocol>
...
@end

私はSwift Extensionで同じことを達成しようとしています

SomeProtocol.Swift

protocol SomeProtocol {
    ...
}

IView拡張機能

import UIKit
extension UIView : SomeProtocol {
...
}

次のコンパイラエラーが発生します。

タイプ「UIView」はプロトコル「SomeProtocol」に準拠していません

13
Errortype520

プロトコルで定義されているすべてのメソッドを実装したことを拡張機能で再確認してください。関数aが実装されていない場合は、リストしたコンパイラエラーが発生します。

protocol SomeProtocol {
    func a()
}

extension UIView : SomeProtocol {
    func a() {
        // some code
    }
}
20
kurtn718
//**Create a Protocol:**

protocol ExampleProtocol {
    var simpleDescription: String { get }
    func adjust()-> String
}


//**Create a simple Class:** 

class SimpleClass {

}

//**Create an extension:**

extension SimpleClass: ExampleProtocol {

    var simpleDescription: String {

    return "The number \(self)"
    }

    func adjust()-> String {

    return "Extension that conforms to a protocol"

    }


}

var obj = SimpleClass() //Create an instance of a class

println(obj.adjust()) //Access and print the method of extension using class instance(obj)

結果:プロトコルに準拠した拡張機能

それが役に立てば幸い..!

10
Anup