我不明白为什么这不起作用。我有两个实体,我们称之为员工和部门。 Andpartments有一个名为division的String属性。这非常有效:
NSLog(@"Division: %@",employee.department.division);
控制台显示,“世界海鲜”。但是,如果我尝试与完全相同的字符串进行比较,则会失败:
if(employee.department.division == @"Worldwide Seafood") NSLog(@"Works in seafood!");
控制台中没有显示任何内容,即比较无法正常工作。
对任何人都有意义吗?感谢。
答案 0 :(得分:1)
请改为if ([employee.department.division isEqualToString:@"Worldwide Seafood"])...
答案 1 :(得分:1)
使用==
来比较NSObject
个实例(在本例中为NSString
个实例)是指针比较,因为无法在堆栈上创建Objective-C实例。因此,您的代码会询问NSString
实例employee.department.division
是否与静态字符串是相同的指针(相同的内存位置)。几乎可以肯定不是这样。
你应该使用
[employee.department.division isEqualToString:@"Worldwide Seafood"]
更一般地说,您应该使用-[NSObject isEqual:]
来比较对象实例。