符合协议的 Swift 扩展
Posted
技术标签:
【中文标题】符合协议的 Swift 扩展【英文标题】:Swift extension that conforms to protocol 【发布时间】:2014-07-23 01:36:32 【问题描述】:我在 Swift 中创建符合协议的扩展时遇到问题。
在 Objective-C 中,我可以创建一个符合协议的类别:
SomeProtocol.h
@protocol SomeProtocol
...
@end
UIView+CategoryName
#import SomeProtocol.h
@interface UIView (CategoryName) <SomeProtocol>
...
@end
我正在尝试使用 Swift 扩展实现同样的目的
SomeProtocol.swift
protocol SomeProtocol
...
UIView 扩展
import UIKit
extension UIView : SomeProtocol
...
我收到以下编译器错误:
类型“UIView”不符合协议“SomeProtocol”
【问题讨论】:
协议中的方法你实现了吗? 【参考方案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)
结果:符合协议的扩展
希望对您有所帮助..!
【讨论】:
你能解释一下如何确认 var simpleDescription: String get set property. @RajeshKumarvar simpleDescription: String get return "The number \(self)" set(desc) self.simpleDescription = desc
以上是关于符合协议的 Swift 扩展的主要内容,如果未能解决你的问题,请参考以下文章