mapview をオーバーレイし、RegexKitLite を使用しています。私はそれを機能させることができませんでした。.m および .h ファイルをダウンロードし、プロジェクトに追加しました。また、 libicucore.dylib または libicucore.A.dlib を追加するか、 -licucore を他のコンパイラフラグフィールドに追加してみました。それでもエラーが発生します:
2012-04-01 19:38:04.633 sennerdeysen[907:15803] -[__NSCFString stringByMatching:capture:]: 認識されないセレクターがインスタンス 0x88b6a00 に送信されました 2012-04-01 19:38:04.634 sennerdeysen[907:15803] *アプリの終了キャッチされない例外 'NSInvalidArgumentException' のため、理由: '-[__NSCFString stringByMatching:capture:]: 認識されないセレクターがインスタンス 0x88b6a00 に送信されました'
何か案が?
最新の Xcode ですが、SDK は 4.3 です
iOS 5.0 SDK が提供する ARC やその他のものはありません。
stringbymatching メソッドを呼び出す関数は次のとおりです。
-(NSArray*) calculateRoutesFrom:(CLLocationCoordinate2D) f to: (CLLocationCoordinate2D) t {
NSString* saddr = [NSString stringWithFormat:@"%f,%f", f.latitude, f.longitude];
NSString* daddr = [NSString stringWithFormat:@"%f,%f", t.latitude, t.longitude];
NSString* apiUrlStr = [NSString stringWithFormat:@"http://maps.google.com/maps?output=dragdir&saddr=%@&daddr=%@", saddr, daddr];
NSURL* apiUrl = [NSURL URLWithString:apiUrlStr];
NSError *error;
NSString *apiResponse=[NSString stringWithContentsOfURL:apiUrl encoding:NSASCIIStringEncoding error:&error];
if(apiResponse)
{
NSString* encodedPoints = [apiResponse stringByMatching:@"points:\\\"([^\\\"]*)\\\"" capture:1L];
NSLog(@"%@",encodedPoints);
return [self decodePolyLine:[encodedPoints mutableCopy]];
}
else
{
UIAlertView *alertView=[[[UIAlertView alloc]initWithTitle:@"Hata"
message:@"Rota çizilemedi. Lütfen daha sonra tekrar deneyiniz."
delegate:nil
cancelButtonTitle:@"Tamam"
otherButtonTitles:nil] autorelease];
[alertView show];
return nil;
}
}