RLMObjects 在 Realm Cocoa 中未被识别为相同对象

RLMObjects not recognised as the same in Realm Cocoa

我有一个包含 RLMObject 的 tableView,我想搜索包含特定 RLMObject 的行。 将 RLMResult 对象转换为其原始类型后,它与其原始对象不同:

    // ... adding a todoA with !isCompleted to defaultRealm()
    var firstItem = Todo.objectsWhere("isCompleted == false")[0] as! ToDo
    if firstItem == todoA {
         // todoA is != firstItem even-though they should be the same object
    }

如何比较两个 RLMObject 而不必实现 primaryKey 分配?

RLMObject 不符合 Swift 的 Equatable 协议,允许 ==!= 比较。根据您想要的对象的相等语义,您可以在 RLMObject 上使用以下扩展:

extension RLMObject: Equatable {}
func == <T: RLMObject>(lhs: T, rhs: T) -> Bool {
  return lhs.isEqualToObject(rhs)
}