Yeah, but if you read the docs for NSURL, part of them say that a trailing 
slash is added automatically or else inconsistent results would be created.  
Except here it chooses to ignore that and drop the end of the URL back to the 
last / , while still displaying it in the description for the instance and 
ignoring it in the absoluteURL for the instance.

Yea! Fun times!

Now I remember while I rolled my own methods for building URLs a few years ago. 
 

Argh.

Thanks everyone.  

(Alex mutters something about going back to 6502 assembly for his own sanity.)

Sent from my iPad

> On Feb 22, 2019, at 12:55 PM, Steve Christensen <puns...@mac.com> wrote:
> 
> Alex, is there any reason you couldn’t have used one of these?
> 
> [self.sharedData.webServicesURL URLByAppendingPathComponent:@"login"]
> [self.sharedData.webServicesURL URLByAppendingPathComponent:@"login" 
> isDirectory:{YES|NO}]
> 
> 
>> On Feb 22, 2019, at 9:40 AM, Alex Zavatone <z...@mac.com> wrote:
>> 
>> There are 2 problems here.
>> 
>> The description is non standard and misleading and the /api string is 
>> stripped from the URL that it indicates it will use in that URL.  Look.
>> 
>> (lldb) po [[NSURL URLWithString:@"/login" 
>> relativeToURL:self.sharedData.webServicesURL] absoluteURL]
>> https://home-qa.mrcooper.com/login
>> 
>> (lldb) po [NSURL URLWithString:@"/login" 
>> relativeToURL:self.sharedData.webServicesURL] 
>> /login -- https://home-qa.mrcooper.com/api
>> 
>> See how in the top output that /api is stripped from the URL that it will 
>> use while it is displayed in the output on the bottom?
>> 
>> Damn misleading.  
>> 
>> 
>> 
>> 
>> 
>> 
>> Sent from my iPad
>> 
>>> On Feb 22, 2019, at 11:24 AM, Alex Zavatone <z...@mac.com> wrote:
>>> 
>>> Of course I should have said, “produces what appears to be an incorrect 
>>> result.”
>>> 
>>> Have I tried it? No.  I have not because it is telling me that the url I 
>>> tried to create is nothing like the URL I tried to create.
>>> 
>>> Spending some time looking at it this morning and testing against the 
>>> working string, it is apparent that the /api gets stripped off the URL when 
>>> using relativeToURL.  Look at this.
>>> 
>>> (lldb) po self.sharedData.webServices
>>> home-qa.mrcooper.com/api
>>> 
>>> (lldb) po self.sharedData.webServicesURL
>>> https://home-qa.mrcooper.com/api
>>> 
>>> (lldb) po [[NSURL URLWithString:[NSString stringWithFormat:@"%@%@%@", 
>>> @"https://";, self.sharedData.webServices, @"/login"]] absoluteURL]
>>> https://home-qa.mrcooper.com/api/login
>>> 
>>> (lldb) po [[NSURL URLWithString:@"/login" 
>>> relativeToURL:self.sharedData.webServicesURL] absoluteURL]
>>> https://home-qa.mrcooper.com/login
>>> 
>>> See how relativeToURL: strips off the /api text from the URL?
>>> 
>>> 
>>> So strange why they thought it a good idea to output the description and 
>>> debugDescription that way AND strip off part of the URL.
>>> 
>>> Argh.  Thanks for the second (and third) set of eyes.
>>> Alex Zavatone
>>> 
>>> 
>>> Sent from my iPad
>>> 
>>>> On Feb 22, 2019, at 10:48 AM, Jens Alfke <j...@mooseyard.com> wrote:
>>>> 
>>>> 
>>>> 
>>>>> On Feb 22, 2019, at 8:39 AM, Alex Zavatone <z...@mac.com> wrote:
>>>>> 
>>>>> self.loginURL = [NSURL URLWithString:@"/login" 
>>>>> relativeToURL:self.sharedData.webServicesURL]; // // WHY does this not 
>>>>> work? It does "/login -- https://qa-home.mrcooper.com/api";
>>>> 
>>>> Because NSURL’s .description property has a stupid way of printing a 
>>>> relative URL.
>>>> 
>>>> The actual URL is correct, as you’ll see if you do something like `po 
>>>> self.loginURL.absoluteString`. It should return ` 
>>>> https://qa-home.mrcooper.com/login`.
>>>> 
>>>> Moral of the story: Always use .absoluteString to convert an NSURL to a 
>>>> string, never .description or something that calls it implicitly.
>>>> 
>>>> —Jens
> 
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to