核心数据字符串属性不相同

时间:2010-08-28 20:44:41

标签: core-data comparison nsstring equality

我不明白为什么这不起作用。我有两个实体,我们称之为员工和部门。 Andpartments有一个名为division的String属性。这非常有效:

NSLog(@"Division: %@",employee.department.division);

控制台显示,“世界海鲜”。但是,如果我尝试与完全相同的字符串进行比较,则会失败:

if(employee.department.division == @"Worldwide Seafood") NSLog(@"Works in seafood!");

控制台中没有显示任何内容,即比较无法正常工作。

对任何人都有意义吗?感谢。

2 个答案:

答案 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:]来比较对象实例。