gpt4 book ai didi

ios - 可以定义NSFound宏吗?

转载 作者:行者123 更新时间:2023-12-01 18:08:42 24 4
gpt4 key购买 nike

这听起来像是一个愚蠢的问题,但是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的设计模式方法有关-为有效结果(其中有很多)和失败指示(其中有一个)使用单个返回值。在这种情况下,您可以通过与常量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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com