OctoberHammer
1/15/2017 - 2:17 PM

From LocalDataStore, than from BackEnd

class ParseLayer {
	var categoriesDelegate: CategoriesDelegate?
	var categories: [String:PFObject] = [:]
	//class
	//let query = PFQuery(className: "Categories")
	func getAllCategories() {
		
		let query = PFQuery(className: "Categories")
		query.fromLocalDatastore()
		
		query.findObjectsInBackground {(objects: [PFObject]?, error: Error?) in
			if error == nil && !(objects!.count == 0) {//Массив не может быть пустым
				// The find succeeded.
				print("Successfully retrieved \(objects!.count) from Local DataStore")
				// Do something with the found objects
				if let objects = objects, var categoriesDelegate = self.categoriesDelegate {
					for object in objects {
						categoriesDelegate.categories[object.objectId ?? ""] = object
					}
				} else {
        //Если ошибка  или массив пустой - тогда премся на бэкэнд
					self.getAllCategoriesFromBackend()
				}
			} else {
				self.getAllCategoriesFromBackend()
				// Log details of the failure
				//print("Error: \(error!) \(error!.userInfo)")
			}
		}
	}
	
	func getAllCategoriesFromBackend() {
		let query = PFQuery(className: "Categories")
		query.findObjectsInBackground {(objects: [PFObject]?, error: Error?) in
			if error == nil {
				// The find succeeded.
				print("Successfully retrieved \(objects!.count) from Local DataStore")
				// Do something with the found objects
				if let objects = objects, var categoriesDelegate = self.categoriesDelegate {
					for object in objects {
						categoriesDelegate.categories[object.objectId ?? ""] = object
					}
					PFObject.pinAll(inBackground: objects)
				} else {
					
				}
			} else {
				// Log details of the failure
				//print("Error: \(error!) \(error!.userInfo)")
			}
			
		}
	}
}