目前我一直试图使用这个if语句:
if (self.foodName.text == nil){
NSLog(@"No Value")
}
这似乎不起作用。这与return语句有关吗?如果是这样,有人可以解释如何使用return语句或指向正确的方向,这样我就能理解它们,因为我只是Objective-C的新手。
答案 0 :(得分:1)
使用此选项,NSString
可能包含空格,我认为验证NSString
值的最佳解决方案。
NSCharacterSet *charSet = [NSCharacterSet whitespaceCharacterSet];
NSString *result = [self.foodName.text stringByTrimmingCharactersInSet:charSet];
if ([result isEqualToString:@""]) {
NSLog(@"No Value Found");
}
答案 1 :(得分:1)
你所拥有的是正确的,但你可能无法理解空字符串和零之间的差异。 Nil表示字符串尚未初始化,并且未指向任何内存地址。这与指向空字符串(@“”)的字符串不同。
以下是您可能(或可能不会)找到有用的
的小代码段NSString *aString = nil;
NSLog(@"aString = %@",aString);
if (aString == nil)
{
NSLog(@"aString is nil");
}
NSString *aSecondString = @"";
NSLog(@"aSecondString equals = %@",aSecondString);
if (aSecondString == nil)
{
NSLog(@"aString is still nil!");
}
else if ([aSecondString isEqualToString:@""])
{
NSLog(@"aString is not nil, but is an empty string");
}
输出看起来像这样
2014-01-22 23:29:16.314 TableViewCellWithAutoLayout[94886:a0b] aString = (null)
2014-01-22 23:29:16.315 TableViewCellWithAutoLayout[94886:a0b] aString is nil
2014-01-22 23:29:16.315 TableViewCellWithAutoLayout[94886:a0b] aSecondString equals =
2014-01-22 23:29:16.315 TableViewCellWithAutoLayout[94886:a0b] aString is not nil, but is an empty string
答案 2 :(得分:0)
另一种方式:
if (self.foodName.text.length == nil)
{
NSLog(@"No Value")
}
答案 3 :(得分:0)
当您检查nill时,如果对象self.foodName.text指向空的内存空间,那么您的意思是什么。你想要的是:
if ([self.foodName.text isEqualToString:@""]) {
NSLog(@"No Value")
}
这表明对象self.foodName.text的值是否包含空字符串。
答案 4 :(得分:0)
文本字段和文本视图可以包含空格和/或新行,因此您必须修剪它们 。然后你可以检查长度
NSString *trimmedString = [self.foodName.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
// if self.foodName.text have value @" test \n"
// then trimmedString will have value @"test"
// if self.foodName.text have value @" \n"
// then trimmedString will have value @""
if (trimmedString.length == 0) {
// Empty field
}
答案 5 :(得分:0)
请尝试以下代码:
if (!self.foodName.text){
NSLog(@"Text is nil")
}
else if(self.foodName.text.length == 0){
NSLog(@"Text is not nil but it does not contain anything");
}
如果string不包含任何字母(lenght = 0),并不意味着你的字符串是nil。 nil表示您的字符串未分配给任何内存位置。
答案 6 :(得分:0)
有很多方法
if([self.foodName.text isEqualToString:@""] || [self.foodName.text isEqual:[NSNull null]]|| self.foodName.text.length == 0)
{
//code here
}
答案 7 :(得分:0)
最短的方式是:
if(!self.foodName.text.length){
NSLog(@"No Value")
}
它允许您一次检查以下案例:
答案 8 :(得分:0)
您的代码检查self.foodName.text是否为nil。这意味着没有文本对象。这很可能不是你真正想要检查的。 “无NSString对象”和“根本不包含任何字符的NSString对象”之间存在差异。
如果你想检查文本是否完全没有对象,或者是真实对象但内部没有文本,那么最简单的是self.foodName.text.length == 0.也许你想做一些更复杂的事情,如检查是否没有文本,或只有空格字符,那么上面使用stringByTrimmingCharactersInSet的答案将执行此操作。
这里的简单检查和使用stringByTrimmingCharactersInSet的更复杂的检查使用了一种非常常见的Objective-C技术:如果将方法发送到nil对象,或者尝试访问nil对象的属性,结果为0 /不,无论什么是合适的。因此,如果text == nil,则text.length == 0. stringByTrimmingCharactersInSet返回nil,nil.length再次为0,因此您不必检查这一点。