Многопараметрическое сопоставление с Three20 и TTURLMap

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

[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 ответ

Решение

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

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

наслаждаться!

/ ССО

Другие вопросы по тегам