简体   繁体   English

Swift 2.0中的关联属性

[英]associated property in swift 2.0

I have written an extension in swift 2.0. 我已经在Swift 2.0中编写了扩展。 I want to use associated property in my extension. 我想在扩展程序中使用关联的属性。

public typealias ShareCompletion = (result: AnyObject, error : NSError?) -> Void
private var ShareCompletionKey = "ShareCompletionKey"

extension UIViewController  {

var completionHandler : ShareCompletion? {
    get {
        return objc_getAssociatedObject(self, &ShareCompletionKey)
    }
    set {
        objc_setAssociatedObject(self, &ShareCompletionKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN)
    }
 }
}

Unable to identify the error in the code 无法识别代码中的错误

Following are the errors: 错误如下:

Cannot convert return expression of type 'AnyObject!' to return type 'ShareCompletion?'

enter code here Cannot convert value of type 'ShareCompletion?' to expected argument type 'AnyObject!'

there is more trouble in your code, but most important is, that AnyObject is a protocol to which all classes implicitly conform. 代码中会有更多麻烦,但最重要的是,AnyObject是所有类都隐式遵循的协议。 your ShareCompletion is not a class at all 您的ShareCompletion根本不是一个类

import Foundation
public typealias ShareCompletion = (result: AnyObject, error : NSError?) -> Void
private var ShareCompletionKey = "ShareCompletionKey"

let sc: ShareCompletion = { result, error in }
print(sc.dynamicType) // (AnyObject, Optional<NSError>) -> ()
sc is AnyObject // FALSE !!!!!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM