Подтвердить что ты не робот

Быстрое расширение, соответствующее протоколу

У меня возникли проблемы с созданием расширения в Swift, которое соответствует протоколу.

В Objective-C я мог бы создать категорию, соответствующую протоколу:

SomeProtocol.h

@protocol SomeProtocol
...
@end

UIView + CategoryName

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

Я пытаюсь добиться этого с помощью Swift Extension

SomeProtocol.swift

protocol SomeProtocol {
    ...
}

Расширение UIView

import UIKit
extension UIView : SomeProtocol {
...
}

Я получаю следующую ошибку компилятора:

Тип 'UIView' не соответствует протоколу 'SomeProtocol'

4b9b3361

Ответ 1

Пожалуйста, дважды проверьте в своем расширении, что вы внедрили все методы, определенные в протоколе. Если функция a не реализована, тогда вы получите ошибку компилятора, которую вы указали.

protocol SomeProtocol {
    func a()
}

extension UIView : SomeProtocol {
    func a() {
        // some code
    }
}

Ответ 2

//**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)

Результат: расширение, соответствующее протоколу

Надеюсь, это поможет..!