Многопараметрическое сопоставление с Three20 и TTURLMap - PullRequest
2 голосов
/ 06 июля 2010

Я следую этому учебнику и объявляю следующие сопоставления в моем делегате приложения:

[map from:@"x://profile/(initWithId:)/(name:)" toViewController:[ProfileViewController class]];
[map from:@"*" toViewController:[TTWebController class]];

В ProfileViewController.m Я реализую селектор - (id)initWithId:(int)anIdentifier name:(NSString *)name для обработки такого сопоставления.Я полагаю, что открытие URL-адресов, например x://profile/1/John Doe, вызовет [[ProfileViewController alloc] initWithId:1 name:@"John Doe"], однако, похоже, что это не так.Класс TTWebController по умолчанию вызывается каждый раз, когда я открываю указанный URL.

Использование одного параметра, то есть что-то вроде x://profile/(initWithId:), делает правильную вещь, а именно: [[ProfileViewController alloc] initWithId:1].

Я что-то здесь упустил?Как использовать многопараметрическое сопоставление с Three20 и TTURLMap?

1 Ответ

3 голосов
/ 06 июля 2010

проблема в том, что «x: // profile / 1 / John Doe» неправильно отформатирован как URL.когда вы создаете URL, попробуйте что-то вроде:

NSString *URL = [NSString stringWithFormat:@"x://profile/%d/%@", 1,
                 [@".." stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];

наслаждайтесь!

/ mtr

...