I’m building a url dynamically and needed a way to add an NSNumber’s intValue to the end of it.
NSNumber *hatId = [NSNumber NumberWithInt:25]
NSMutableString* theUrlString = [[NSMutableString alloc] init];
[theUrlString appendFormat:@"http://www.website.com/SelectHat/%d", [hatid intValue]];
NSURL *url = [NSURL URLWithString:theUrlString];
After doing the above a simple unit test or NSLog will show the result looks valid
http://www.website.com/SelectHat/25
But my question is this – does concatenation in this way alter the NSString so it’s no long a valid string like I would expect? also is this a “good” way to build a string that needs the intValue from an NSNumber?
Update
I just wanted to make sure the %d inline was no problem and the NSString was as I expected it would be. The issue I’m having is a bit more complex so I’ll save that for another question. Thanks for the replies about NSURL / NSNumber / int as I’m still learning a great deal about objective-c
I’m curious why you think appending content to a mutable string would make that string invalid. If you’re having a problem please share what’s actually going wrong.
Is valid and a fine way to modify a NSMutableString.
Since you’re building a URL you might want to use NSURL directly instead. Look at +URLWithString:realtiveToURL: and -URLByAppendingPathComponent: as ways to build a NSURL. Those methods can be convenient because they will prevent you from accidentally creating a string ending in “SelectHat25” or “SelectHat//25” when you wanted “SelectHat/25”.
Now strings and URLs aside
is not valid. That’s creating a pointer to an NSNumber object and assigning it to an int value. You’ll be looking for a NSNumber object at memory address ’25’ and who knows what you’ll find there. You should be constructing an instance of NSNumber instead or just using an int type.