Ios 域中未识别为相同的RLMObjects
我有一个包含RLMObject的tableView,希望搜索包含特定RLMObject的行。 将RLMResult对象强制转换为其原始类型后,它与其原始对象不同: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 {
// ... 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