title: Ambiguous use of 'value'
body: <p>After converting my project to Swift 3, I'm getting this message:</p>
  
  <blockquote>
    <p>Ambiguous use of 'value'</p>
  </blockquote>
  
  <p>On the line </p>
  
  <pre><code>let fetcher = wrapper?.value as? Fetcher&lt;UIImage&gt;
  </code></pre>
  
  <p>I'm trying to associate with NSObject instances using extensions</p>
  
  <pre><code>public extension UIImageView {
     var hnk_fetcher : Fetcher&lt;UIImage&gt;! {
        get {
            let wrapper = objc_getAssociatedObject(self, &amp;HanekeGlobals.UIKit.SetImageFetcherKey) as? ObjectWrapper
            let fetcher = wrapper?.value as? Fetcher&lt;UIImage&gt;  //Ambiguous use of 'value'
            return fetcher
        }
        set (fetcher) {
            var wrapper : ObjectWrapper?
            if let fetcher = fetcher {
                wrapper = ObjectWrapper(value: fetcher)
            }
            objc_setAssociatedObject(self, &amp;HanekeGlobals.UIKit.SetImageFetcherKey, wrapper, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
        }
    }
  </code></pre>
  
  <p>Here is my ObjectWrapper class.</p>
  
  <pre><code>class ObjectWrapper : NSObject {
      let value: Any
  
      init(value: Any) {
          self.value = value
      }
  }
  </code></pre>
  
  <p>Everything was fine before migrating the code. What went wrong?</p>