Почему эти строки не равны? - PullRequest
2 голосов
/ 14 декабря 2011
 NSLog(@"%@",variable);
 temp = @"(null)";
 if([variable  isEqualToString:temp])

Это код, который я использую, и в качестве вывода я получаю

[4298: 207] (ноль)

Но, конечно, по некоторым причинамони не равны.Это вне меня, чтобы понять это.Обе переменные имеют тип NSString.

Ответы [ 2 ]

9 голосов
/ 14 декабря 2011

(null) - это просто вывод, который спецификатор формата %@ дает, когда значение равно nil. То, что в variable есть nil, а не буквальная строка (null)

0 голосов
/ 14 декабря 2011

Причина, по которой вы не понимаете, состоит в том, что вы смешиваете две вещи, которые не совпадают.Тем не менее, когда мы используем письменный язык и описываем эти две вещи, они кажутся одинаковыми на бумаге / на экране ... по крайней мере, вам.

Сначала вы должны понять разницу между описанием / label и означает .

Если я напишу NULL ... то, что вы видите визуально, является описанием.Что это описывает / представляет / означает?NULL ничего не значит.Тем не менее, когда вы пишете код, вы не пишете переменная = ничего.Вы пишете переменную = NULL.Метка - означает NULL - ничего

Когда вы пишете temp = @ «null» ... вы утверждаете, что переменная temp имеет значение строки из 4 символов, и именно эти четыре –null Label - означают @ «null«- строка из 4 символов (ноль)

Затем вы сравниваете значения / значения. , а не описания.Очевидно .. ничто не равно строке с 4 символами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...