为了账号安全,请及时绑定邮箱和手机立即绑定

比较可可中的字符串

比较可可中的字符串

iOS
茅侃侃 2019-11-02 14:08:59
我努力了:- (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当所述第一比


查看完整回答
反对 回复 2019-11-02
?
达令说

TA贡献1821条经验 获得超6个赞

比较两个相同的字符串时,compare将返回NSOrderedSame0。它也可以返回NSOrderedAscending-1和NSOrderedDescending1。


您可能更喜欢使用isEqualToString返回YES或NO的值。


查看完整回答
反对 回复 2019-11-02
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

当将==运算符应用于对象时,将检查指针是否相等。


你必须使用-compare方法或它的同伴之一- compare:options:- compare:options:range:或者-compare:options:range:locale:它会返回一个NSComparisonResult(NSOrderAscending,NSOrderSame,NSOrderDescending)


如果只需要相等比较,则可以使用-isEqualToString:它返回一个BOOL值。


查看完整回答
反对 回复 2019-11-02
  • 3 回答
  • 0 关注
  • 442 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信