title: How to effectively convert between NSNumber and NSString objects
body: <p>I have a <code>NSDictionary</code> object and there are hundreds of key-object pair in it. All objects are either <code>NSNumber</code> or <code>NSString</code>.</p>
  
  <p>Check this : </p>
  
  <pre><code>NSDictionary *dic = 
  {
  @"item1" : a NSNumber object, 
  @"item2" : a NSString object,
  @"item3" : a NSString object,
  ....
  }
  </code></pre>
  
  <p>I'd like to convert this <code>NSDictionary</code> to a model class with same key, but assigned type as :</p>
  
  <pre><code>@interface ClassA 
  @property (strong, nonatomic) NSString *item1; 
  @property (strong, nonatomic) NSNumber *item2;
  @property (strong, nonatomic) NSString *item3;
  ....
  </code></pre>
  
  <p>Is there an effective way to do this? I have tried key-value-coding ...</p>
  
  <pre><code>ClassA *class = [Class new];
   [dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
      [class setValue:obj forKey:key];
   }
  </code></pre>
  
  <p>But what happen is item1 is still NSNumber, and item2 is still NSString..</p>
  
  <p>Need some guidance on this.</p>
  
  <p>Thanks.</p>