Игра с URL-адресами, точнее говоря, построение их постепенно из других обнаруженных URL-адресов. При этом я хотел бы продолжать использовать объекты NSURL вместо манипулирования NSStrings, просто чтобы получить дополнительные проверки работоспособности и специфичные для URL методы из класса URL.
К сожалению, похоже, что нет способа заставить следующее объединиться, как я хочу:
NSURL *base = [NSURL URLWithString:@"http://my.url/path"];
NSString *suffix = @"sub/path";
Я хочу добавить их, чтобы получить:
<a href="http://my.url/path/sub/path" rel="nofollow noreferrer">http://my.url/path/sub/path</a>
Но лучшее, что я могу получить, это:
NSURL *final = [NSURL URLWithString:suffix relativeToURL:base];
, который усекает путь на основании, в результате чего:
<a href="http://my.url/sub/path" rel="nofollow noreferrer">http://my.url/sub/path</a>
Есть функция CoreFoundation, которая делает это:
CFURLRef CFURLCreateCopyAppendingPathComponent (
CFAllocatorRef allocator,
CFURLRef url,
CFStringRef pathComponent,
Boolean isDirectory
);
Что, кажется, работает нормально, но отскок назад от ObjC к C раздражает и раздражает ... Я бы предпочел просто манипулировать строками ... Я что-то упустил? Кроме того, чтобы быть слишком разборчивым, конечно. :)