【发布时间】:2014-06-27 17:30:17
【问题描述】:
比起冗长的if 语句,还有什么更简洁、更易读的方法来验证字符串是否包含在可能值的集合中?换句话说,检查一个值是否在域内?
我想做这样的事情……
NSArray* domain = [NSArray arrayWithObjects:@"dog", @"cat", @"bird", nil];
BOOL valueFoundInDomain = [domain containsObject:@"elephant"];
但我担心使用 NSString 进行相等性检查。我想检查文本的值,而不是对象身份。
documentation for NSArray 表示containsObject 方法使用isEqual 方法。但我在documentation for NSString 中找不到对isEqual 实现的解释。 isEqualToString 方法的存在表明 isEqual 可能正在做其他事情。如果其他事情涉及interning of string objects,那么自己试验可能会产生误导性的结果,所以我想要一个记录在案的答案。
【问题讨论】:
-
您可以通过使用
NSMutableString构建一些字符串来进行测试。这样您就可以放心,不会涉及身份检查。
标签: ios objective-c cocoa nsstring nsarray