Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 域中未识别为相同的RLMObjects_Ios_Swift_Realm - Fatal编程技术网

Ios 域中未识别为相同的RLMObjects

Ios 域中未识别为相同的RLMObjects,ios,swift,realm,Ios,Swift,Realm,我有一个包含RLMObject的tableView,希望搜索包含特定RLMObject的行。 将RLMResult对象强制转换为其原始类型后,它与其原始对象不同: // ... adding a todoA with !isCompleted to defaultRealm() var firstItem = Todo.objectsWhere("isCompleted == false")[0] as! ToDo if firstItem == todoA {

我有一个包含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的
equalable
协议,允许
=
=比较。根据对象所需的相等语义,可以在
RLMObject
上使用以下扩展:

extension RLMObject: Equatable {}
func == <T: RLMObject>(lhs: T, rhs: T) -> Bool {
  return lhs.isEqualToObject(rhs)
}
扩展RLMObject:equalable{}
func==(左:T,右:T)->Bool{
返回lhs.IsequalTobject(rhs)
}

IseQualtObject
仍然无法给出正确的结果。我是否可以访问计算的(内部)primaryKey并比较它们?IsequalTobject将使用以下等式语义:。如果您想要不同的语义,您可以自由地这样做。
(o1==o2)
不会给出
true
,即使它是同一个对象。似乎将
o1
作为RLMResult,并使用它使其标识与原始标识不同。我有没有办法不用自己实现primaryKey?我自己不想管理对象的唯一键,但是获取它们可以进行比较。如果需要不同的语义,则需要自己构建。如果使用IsequalObject,则使用的是RLMObjectBaseAreEqual