【发布时间】:2016-03-17 15:03:01
【问题描述】:
这听起来像是一个愚蠢的问题,但 Apple 为我们提供了 NSNotFound,但他们为什么不提供一个名为 NSFound 的?有没有一种方法可以自己定义一个 NSFound 宏?
我问这一切的原因是为了让我检查一个字符串是否“包含”某个字符,我必须做双重否定,即
if ([XML rangeOfString:@"error" options:NSCaseInsensitiveSearch].location != NSNotFound)
{
//server is down
}
else
{
//server is up
}
至少对我来说,如果我可以简单地这样做,这会更容易阅读
if ([XML rangeOfString:@"error" options:NSCaseInsensitiveSearch].location == NSFound)
{
//server is down
}
else
{
//server is up
}
如果我想定义 NSFound 或 SAMFound,我该怎么做?
【问题讨论】:
-
因为 rangeOfString 返回字符串的位置。如果您实际上没有得到找到字符串的位置,那么 NSFound 常量有什么用?
-
@JAL 这没有意义。如果 rangeOfString 返回字符串的位置,那很好,这就是我想要的。如果找不到,请执行其他操作。它会进入 else 块
-
如果你要为此定义一个宏,考虑到大量可能的“找到”案例,你真的需要做类似
#define NSFound(X) (X) != NSNotFound这样的事情,这意味着你必须像这样使用它NSFound([XML rangeOfString:@"error" options:NSCaseInsensitiveSearch].location)就个人而言,这也不太可读且不标准!
标签: ios objective-c