title: Passing NSDictionary UIView objects to NSDictionaryOfVariableBindings/Autolayout
body: <p>If I assign a UIView to an NSDictionary and then try to recall its value in autolayout when setting constraints as here</p>
  
  <pre><code>UILabel *label = [[UILabel alloc] init];
  NSDictionary *items = [[NSMutableDictionary alloc] init];
  [items setValue:label forKey:@"label"];
  
  [NSLayoutConstraint constraintsWithVisualFormat:@"|-[label]-|"
                                     options:0
                                     metrics:nil
                                     views:NSDictionaryOfVariableBindings(
                                        [items objectForKey:@"label"]
                                      )];
  </code></pre>
  
  <p>I get the following error</p>
  
  <pre><code>uncaught exception 'NSInternalInconsistencyException', reason: 'NSDictionaryOfVariableBindings failed because either one of the values is nil, or there's something wrong with the way the macro is being invoked.  Cannot assign value nil for key "objectForKey:@"label"]". Keys:(
  "[items",
  "objectForKey:@\"label\"]")'
  </code></pre>
  
  <p>I get the same thing if I try to pass an array objectAtIndex: element in also</p>
  
  <p>Frustratingly it does work if I define it like this</p>
  
  <pre><code>[items setValue:NSDictionaryOfVariableBindings(label) forKey:@"label"];
  </code></pre>
  
  <p>But I'm trying to load my UIViews into a collection object (any collection object) and then be able to recall them when setting constraints</p>
  
  <p>It's as though NSDictionaryOfVariableBindings is interpreting the literal text I'm passing rather than evaluating the statement</p>