我有这样的模特:
class Session: Object {
dynamic var token: NSData?
}
class SessionsPool: Object {
let sessions = List<Session>()
}
我可以使用所需的令牌
请求所有会话(通常有一个或零)let myToken: NSData = ...
let sessions = self.realm.objects(Session).filter("token == %@", myToken)
效果很好。
我想请求所有至少有一个会话具有所需令牌的池。我想&#34;观察&#34;这个更新请求。
let myToken: NSData = ...
var pools = self.realm.objects(SessionsPool).filter("ANY sessions.token == %@", myToken)
pools.addNotificationBlock { (change) in
// Some code
}
但由于错误,我无法做到:
*** Terminating app due to uncaught exception 'Unsupported operator',
reason: 'NSData properties cannot be queried over an object link.'
因此,我可以使用token == *someNSData*
或类似ANY sessions.stringToken == *someNSString*
之类的谓词,但不能使用ANY sessions.token == *someNSData*
。
NSData出了什么问题?
答案 0 :(得分:1)
尚未实现该特定查询类型:https://github.com/realm/realm-cocoa/issues/4222
但是,您的查询可以重构为Realm支持的内容:
替换为:ANY sessions.token == %@
这样:SUBQUERY(sessions, $session, $session.token == %@).@count > 0