我努力了:- (NSString*) generateString{ NSString* stringToReturn = @"thisString"; return stringToReturn;}- (void) otherMethod{ NSString *returnedString = [self generateString]; if (returnedString == @"thisString") { // Do this } else if (returnedString == @"thatString") { // Do that }}永远不会匹配。然后我尝试了if ([returnedString compare:@"thisString"] == 1)但是,即使与其他字符串进行比较时,compare方法也始终为我返回1。正确的方法是什么,我应该期待什么结果?
3 回答
慕仙森
TA贡献1827条经验 获得超7个赞
首先,您正在使用==运算符比较两个(类型为NSString *)的对象指针。因此,当指针相同时返回true,而不是在字符串具有相同内容时返回true。如果要比较两个字符串是否相同,则应使用isEqualToString:或isEqual:(isEqual:更通用,因为它适用于所有类型的对象)。
其次,compare:返回0(NSOrderSame)当它们是相同的,和1(NSOrderedDescending当所述第一比
达令说
TA贡献1821条经验 获得超6个赞
比较两个相同的字符串时,compare将返回NSOrderedSame0。它也可以返回NSOrderedAscending-1和NSOrderedDescending1。
您可能更喜欢使用isEqualToString返回YES或NO的值。
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
当将==运算符应用于对象时,将检查指针是否相等。
你必须使用-compare方法或它的同伴之一- compare:options:- compare:options:range:或者-compare:options:range:locale:它会返回一个NSComparisonResult(NSOrderAscending,NSOrderSame,NSOrderDescending)
如果只需要相等比较,则可以使用-isEqualToString:它返回一个BOOL值。
- 3 回答
- 0 关注
- 442 浏览
添加回答
举报
0/150
提交
取消