代码之家  ›  专栏  ›  技术社区  ›  ed94133

与coredata字符串属性相等不起作用

  •  1
  • ed94133  · 技术社区  · 14 年前

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

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

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

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

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

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

    2 回复  |  直到 14 年前
        1
  •  1
  •   Barry Wark    14 年前

    使用 == 比较 NSObject 实例(在本例中 NSString 实例)是指针比较,因为不能在堆栈上创建Objective-C实例。因此,您的代码询问 非字符串 实例 employee.department.division 是与静态字符串相同的指针(相同的内存位置)。几乎可以肯定的是,情况并非如此。

    你应该使用

    [employee.department.division isEqualToString:@"Worldwide Seafood"]
    

    一般来说,你应该使用 -[NSObject isEqual:] 比较对象实例。

        2
  •  1
  •   theMikeSwan    14 年前

    试试这个 if ([employee.department.division isEqualToString:@"Worldwide Seafood"])...