আমার কাছে এমন কীগুলির একটি অ্যারে রয়েছে যা আমার সামাজিক নেটওয়ার্কের জন্য যেমন / পোস্টস / আইডি / (পোস্ট তথ্য) এর মতো অবজেক্ট পোস্ট করতে পারে
আমি যখন পোস্টটি লোড করি / পোস্টগুলি / 0 এবং তারপরে / পোস্টগুলি / 1 ইত্যাদি observeSingleEventOfType(.Value)পদ্ধতিটি ব্যবহার করে ।
আমি lazyTableViewএকবারে 30 লোড করতে একটি ব্যবহার করি এবং এটি বেশ ধীর হয়। আমার জেএসওন ট্রিতে ডেটা পুনর্গঠন করতে হবে এমন কি আমি কোয়েরির পদ্ধতিগুলির একটি বা এটি দ্রুততর করার অন্য কোনও উপায় ব্যবহার করতে পারি?
আমি পার্সে আমার অ্যাপ্লিকেশনটি পুনরায় বাস্তবায়ন করতে এসেছি এবং এখনও পর্যন্ত অভিজ্ঞতাটি বেশ ভাল ছিল। শুধু এই একটি জিনিস আমি কিছুটা আটকে আছি। সাহায্যের জন্য আগাম ধন্যবাদ!
সম্পাদনা:
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 এর মান পেয়ে চলে। যদি এটি এনএসএনআলুল হয় তবে এটি জানেন যে এটি লোড করার শেষ সম্ভাব্য পোস্ট এবং আর কখনও না। যদি এনএসএনএলএল হিট না হয়ে থাকে 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"
} ]