Existem duas situações:
É possível que um objeto seja [NSNull null]
, ou é impossível.
Geralmente, seu aplicativo não deve ser usado [NSNull null];
, se você quiser colocar um objeto " nulo " em uma matriz ou usá-lo como um valor de dicionário. E então você deve saber quais matrizes ou dicionários podem conter valores nulos e quais podem não.
Se você acha que uma matriz nunca contém [NSNull null]
valores, não verifique. Se houver [NSNull null]
, você pode obter uma exceção, mas isso é bom: as exceções de Objective-C indicam erros de programação. E você tem um erro de programação que precisa ser corrigido alterando algum código.
Se um objeto puder ser [NSNull null]
, você verifica isso simplesmente testando
(object == [NSNull null])
. Ligar isEqual
ou verificar a classe do objeto é um absurdo. Existe apenas um [NSNull null]
objeto, e o operador C simples e antigo o verifica da maneira mais direta e eficiente.
Se você verificar um NSString
objeto que não pode ser [NSNull null]
(porque você sabe que não pode ser [NSNull null]
ou porque acabou de verificar se é diferente de [NSNull null]
, então você precisa se perguntar como deseja tratar uma sequência vazia, ou seja, com comprimento 0. Se você tratá-lo como uma null
string nil
, em seguida, (object.length == 0)
test.objeto.length retornará 0 se object == nil
, portanto, este teste cobre objetos e cadeias nulos com comprimento 0. Se você tratar uma cadeia de comprimento 0 diferente de uma cadeia nula, verifique se object == nil
.
Por fim, se você deseja adicionar uma string a uma matriz ou dicionário, e a string pode ser nula, você pode optar por não adicioná-la, substituí-la por @""
ou substituí-la por [NSNull null]
. Substituí-lo por @""
significa que você perde a capacidade de distinguir entre "sem cadeia" e "cadeia de comprimento 0". Substituí-lo [NSNull null]
significa que você precisa escrever um código ao acessar a matriz ou o dicionário que verifica se há [NSNull null]
objetos.