title: Parse address from NSString without NSDataDetector
body: <p>I have been using <code>NSDataDetector</code> to parse address out of strings and for the most part it does a good job. However on address' similar to this one it does not detect it.</p>
  
  <p><code>6200 North Evan Blvd Suit 487  Highland UT 84043</code></p>
  
  <p>Currently I am using this code:</p>
  
  <pre><code>NSError *error = nil;
  NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeAddress error:&amp;error];
  
  
  NSArray *matches = [detector matchesInString:output options:0 range:NSMakeRange(0, [output length])];
  
  for (NSTextCheckingResult *match in matches) {
      if ([match resultType] == NSTextCheckingTypeAddress) {
  
          _address = [_tesseractData substringWithRange:[match range]];
          NSDictionary *data = [match addressComponents];
  
          _zip = [data objectForKey:@"ZIP"];
          if (_zip) {
              NSRange zipRange = [_tesseractData rangeOfString:_zip];
              if (zipRange.location != NSNotFound) {
                  [_tesseractData deleteCharactersInRange:zipRange];
              }
          }
  
          _city = [data objectForKey:@"City"];
          if (_city) {
              NSRange cityRange = [_tesseractData rangeOfString:[_city uppercaseString]];
              if (cityRange.location != NSNotFound) {
                  [_tesseractData deleteCharactersInRange:cityRange];
              }
          }
          _city = [_city capitalizedString];
  
          _state = [data objectForKey:@"State"];
  
          _street = [data objectForKey:@"Street"];
          if (_street) {
              NSRange streetRange = [_tesseractData rangeOfString:[_street uppercaseString]];
              if (streetRange.location != NSNotFound) {
                  [_tesseractData deleteCharactersInRange:streetRange];
              }
          }
          _street = [_street capitalizedString];
  
      }
  }
  </code></pre>
  
  <p>Can anyone suggest a more robust method for parsing out the physical address out of a string? I need to be able to get the Zip, Street, State and City.</p>