首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >TableView:可能是一个简单的错误

TableView:可能是一个简单的错误
EN

Stack Overflow用户
提问于 2012-03-14 22:39:18
回答 3查看 44关注 0票数 0

我正在使用一个表视图,我想知道为什么我的if语句是false。可能是一个非常简单的错误。我已经调试过了,我看到'message‘包含了tableview单元格的值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *message = [NSString stringWithFormat:@"%@",[tableViewArray objectAtIndex:indexPath.row]];
NSString *apple = [NSString stringWithFormat:@"Apple"];
if(apple == message)
.....

感谢您的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-14 22:47:11

您正在比较对象。您将希望改用以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if ([apple isEqualToString:message]) {
    // ...
}
票数 0
EN

Stack Overflow用户

发布于 2012-03-14 22:47:57

是的,很简单,您正在比较两个不同变量的地址,它们肯定不是相同的数字:)用于您使用的内容比较

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (BOOL)isEqualToString:(NSString *)aString

请仔细阅读NSString reference,您可能还想找到一些关于c语言基础知识的文献。

票数 0
EN

Stack Overflow用户

发布于 2012-03-14 22:58:19

在本例中,message是指向内存中NSString对象的指针地址。当您执行==时,您比较的是指针的地址,而不是字符串的内容。要比较实际NSString对象的内容,需要使用适当的方法isEqualToString:

在下面的示例中,我创建了两个字符串,并显示了它们具有相同的内容但不同的指针地址。NSLog()中的%p打印指针地址

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSString *string1 = [NSString stringWithFormat:@"test"];
NSString *string2 = [NSString stringWithFormat:@"test"];

NSLog(@"(%p == %p)      => %d", string1, string2, string1 == string2);
NSLog(@"[string1 isEqualToString:string2] => %d", [string1 isEqualToString:string2]);

=> 2012-03-14 22:55:07.395 Untitled[2797:707] (0x1099146c0 == 0x109914870)      => 0
=> 2012-03-14 22:55:07.398 Untitled[2797:707] [string1 isEqualToString:string2] => 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9711386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文