मेरे पास कुंजियों का एक समूह है जो मेरे सोशल नेटवर्क के लिए ऑब्जेक्ट पोस्ट करता है जैसे / पोस्ट / आईडी / (पोस्ट की जानकारी)
जब मैं observeSingleEventOfType(.Value)विधि का उपयोग करते हुए अपने द्वारा लोड किए गए पोस्ट / पोस्ट / 0 और फिर / पोस्ट / 1 आदि लोड करता हूं ।
मैं lazyTableViewएक समय में 30 लोड करने के लिए एक का उपयोग करता हूं और यह काफी धीमा है। क्या कोई तरीका है जिससे मैं क्वेरी विधियों में से किसी एक का उपयोग कर सकता हूं या किसी अन्य तरीके से इसे तेजी से बना सकता हूं, भले ही मुझे अपने एलसन पेड़ में डेटा को फिर से बनाना पड़े।
मैं Parse से अपने ऐप को फिर से लागू कर रहा हूं और अब तक का अनुभव काफी अच्छा रहा है। बस यह एक बात मैं थोड़ा अटका रहा हूं। मदद के लिए अग्रिम धन्यवाद!
संपादित करें:
func loadNext(i: Int) {
// check if exhists
let ideaPostsRef = Firebase(url: "https://APPURL")
ideaPostsRef.childByAppendingPath(i.description).observeSingleEventOfType(.Value, withBlock: {
(snapshot) in
if i % 29 == 0 && i != 0 && !self.hitNull { return }
// false if nil
// true if not nil
if !(snapshot.value is NSNull) {
let postJSON = snapshot.value as! [String: AnyObject]
print("GOT VALID \(postJSON)")
let post = IdeaPost(message: postJSON["message"] as! String, byUser: postJSON["user"] as! String, withId: i.description)
post.upvotes = postJSON["upvotes"] as! Int
self.ideaPostDataSource.append(post)
self.loadNext(i + 1)
} else {
// doesn't exhist
print("GOT NULL RETURNING AT \(i)")
self.doneLoading = true
self.hitNull = true
return
}
}
}
यह पुनरावर्ती कार्य अनिवार्य रूप से फायरबेस से कुंजी संख्या i के लिए मान प्राप्त करता है। यदि यह NSNULL है तो यह पता है कि लोड करने के लिए अंतिम संभव पोस्ट है और फिर कभी नहीं करता है। यदि NSNULL हिट नहीं होता है, लेकिन i % 29 == 0यह आधार मामले के रूप में लौटता है, तो एक समय में केवल 30 पोस्ट लोड किए जाते हैं (0 अनुक्रमित)। जब मैं सेट doneLoadingकरता हूं true, tableView.reloadData()तो एक संपत्ति पर्यवेक्षक का उपयोग करके कहा जाता है।
यहाँ एक नमूना है कि मैं जो सरणी ले रहा हूँ वह कैसा दिखता है
"ideaPosts" : [ {
"id" : 0,
"message" : "Test",
"upvotes" : 1,
"user" : "Anonymous"
}, {
"id" : 1,
"message" : "Test2",
"upvotes" : 1,
"user" : "Anonymous"
} ]