Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSLog - Strange behavior

I found that last word showed with double quotes. But why?

NSDictionary *guide2 = [NSDictionary dictionaryWithObjectsAndKeys:kArr, @"Kate", aArr, @"Ana-Lucia", kArr, @"John",  nil];
NSArray *array = [guide2 allKeys];
NSLog(@"%@", [array description]);

output:

(
John,
Kate,
"Ana-Lucia"
)
like image 673
Voloda2 Avatar asked Aug 29 '11 07:08

Voloda2


2 Answers

It seems that because of the special character - in the key Ana-Lucia, it displays it within double-quotes. May be this is because to show that the key is a single word. If your key contains only alphabets like "AnaLucia", then it will display it without quotes.

The key is displayed in double-quotes if it contains any characters other than alphabets, even if it is an underscore(_) or space.

like image 194
EmptyStack Avatar answered Sep 30 '22 19:09

EmptyStack


Because it's not strictly alphanumeric and one word only. Try NSArray *array = [NSArray arrayWithObjects:@"abc", @"123", @"$abc", @"a-b-c", @"a b c", nil];, you'll see only the first two are not quoted. It's just an implementation choice from the guy who wrote the description code.

like image 45
Jano Avatar answered Sep 30 '22 18:09

Jano