Я думаю, что это ошибка в Parse, но я не знаю, куда сообщить об этом.
Я использую Parse со Swift. У меня есть PFQueryTableViewController
.
В моей функции queryForTable
я МОГУ использовать следующий запрос:
query.whereKey(kHWActivityFromUserKey, equalTo: User.currentUser())
Однако, когда я меняю equalTo
на notEqualTo
, вот так:
query.whereKey(kHWActivityFromUserKey, notEqualTo: User.currentUser())
... тогда таблица остается пустой и просто ничего не делает. (Он даже не показывает пустые строки.)
Я попытался выяснить, что происходит, поэтому я взял этот запрос и вызвал findObjectsInBackgroundWithBlock
вручную, чтобы посмотреть на objects
и error
внутри блока. Удивительно, но блок так и не был вызван!
Итак, я выполнил запрос в основном потоке, например:
var error = NSErrorPointer()
var objects = query.findObjects(error)
Когда я запустил это, все мое приложение разбилось со следующим исключением:
2015-02-11 13:26:45.339 HDWR[18996:3057150]
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Couldn't create cache key from
<PFUser: 0x7f8e885de7c0, objectId: X7lSc1Gajm, localId: (null)> {
...
Поэтому я думаю, что есть ошибка, связанная с кэшированием, когда я использую whereKey:notEqualTo
с PFObject
.
Я также пробовал вместо этого использовать строку objectId
в запросе, например:
query.whereKey(kHWActivityFromUserKey, notEqualTo: User.currentUser().objectId)
Но затем Parse просто выдает ошибку указателя:
2015-02-11 13:45:46.550 HDWR[19708:3069545]
Error: pointer field fromUser needs a pointer value (Code: 102, Version: 1.6.0)
Как я могу сообщить об этой ошибке в Parse? Или у вас есть идея обходного пути? Нам как бы нужно иметь эту логику в нашем приложении.
findObjectsInBackgroundWithBlock
, никаких других опций или параметров. Запрос также имел ограничение в 1000, был заказан createdAt и имел политику кэшированияkPFCachePolicyCacheThenNetwork
. - person ndbroadbent   schedule 11.02.2015