作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这听起来像是一个愚蠢的问题,但是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
}
最佳答案
您的问题确实与诸如rangeOfString
的设计模式方法有关-为有效结果(其中有很多)和失败指示(其中有一个)使用单个返回值。在这种情况下,您可以通过与常量NSNotFound
的比较来测试单个故障值,但是您不能同样通过简单的比较来测试许多可能的值-而是使用您不喜欢的“双负数”。
如果您发现它太丑陋,请更改它……也许:
@interface NSString (SamExtras)
- (BOOL) SAMcontainsString:(NSString *)string options:(NSStringCompareOptions)options;
@end
@implementation NSString (SamExtras)
- (BOOL) SAMcontainsString:(NSString *)string options:(NSStringCompareOptions)options
{
return [self rangeOfString:string options:options].location != NSNotFound;
}
@end
if ([XML SAMcontainsString:@"error" options:NSCaseInsensitiveSearch])
{
//server is down
}
else
{
//server is up
}
关于ios - 可以定义NSFound宏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36064366/
我是一名优秀的程序员,十分优秀!