Parse Local DataStore не показывает закрепленные данные

Я попытался убедиться, что все рекомендуемые шаги выполняются при реализации локального хранилища данных Parse, но либо закрепление не работает, либо не работает запрос закрепленных объектов. Я пробовал несколько вариантов. Ниже приведен мой код для контроллера представления, а также я включил хранилище данных и т. Д. В файле делегата приложения (используя базовый проект запуска синтаксического анализа). Подскажите пожалуйста где проблема.

Вывод в моей консоли - я могу получить данные с сервера синтаксического анализа, но я либо не могу их правильно закрепить, либо правильно получить, либо что-то еще.

 Success 8888 
Optional([])
Push notifications are not supported in the iOS Simulator.
success 7777
Optional([<Restaurant: 0x7f98ca521f60, objectId: 0rRZNCndje, localId: (null)> {
    Name = time;
}])

Спасибо за помощь!

import Foundation
import Parse
import ParseUI
import UIKit
import Foundation

class RestaurantAdmin: ViewController {
    func getDataFromLocalDataStore() {
        var userName = PFUser.currentUser()?.username
        var messages2: [AnyObject]!
        var query2: PFQuery = PFQuery(className: "Restaurant")
        query2.fromLocalDatastore()
        query2.whereKey("Owner", equalTo: userName!)
        query2.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
            if (error == nil) {
                messages2 = objects
                println(" Success 8888 ")
                println(objects)
            }
            else {
                println("Fail 8888")
            }
        }
    }

    func refreshRestaurantDataFromServer() {
        var userName = PFUser.currentUser()?.username
        var query = PFQuery(className: "Restaurant")
        query.whereKey("Owner", equalTo: userName!)
        query.selectKeys(["Name"])
        var messages: [AnyObject]!
        query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
            if (error == nil) {
                PFObject.pinAllInBackground(objects, block: nil)
                println("success 7777")
                println(objects)
            }
            else {
                println("error 7777")
            }
        }
    }

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        if (PFUser.currentUser()?.username != nil) {
            refreshRestaurantDataFromServer()
        }
        getDataFromLocalDataStore()
    }
}

person buddingprogrammer    schedule 21.09.2015    source источник


Ответы (1)


Поскольку вы используете query.selectKeys(["Name"]), весь объект не загружается. Теперь вы сохраняете этот частичный объект, а затем выполняете запрос, используя query2.whereKey("Owner", equalTo: userName!). Сохраненный объект не содержит ключа "Owner".

person Santhosh    schedule 21.09.2015
comment
Привет, Сантош, я даже прокомментировал query2.whereKey(Owner, equalTo: userName!) и теперь ожидаю, что будут запрошены все объекты класса Restaurant. Я все еще не получаю никаких данных в моем запросе. Нужно ли мне делать что-то другое? - person buddingprogrammer; 21.09.2015
comment
Я попытался загрузить весь объект, и это сработало. Большое спасибо за твою помощь. - person buddingprogrammer; 21.09.2015
comment
Пожалуйста, отметьте это как ответ, если вы нашли мой ответ полезным. Спасибо. - person Santhosh; 22.09.2015
comment
Один вопрос: можем ли мы использовать синтаксический анализ для хранения данных ТОЛЬКО локально, как SQLite и Core-Data? - person Bista; 18.01.2016