
1. สมัคร www.back4app.com
สร้าง app เพิ่มข้อมูลสำหรับทดสอบตามต้องการ
2. ตั้งค่าการเชื่อมต่อกับ Parse Server
ไปที่ class AppDelegate
เพิ่ม code ตามบรรทัดที่ 3-8 เพื่อ connect ไปที่ Parse App
AppConfig.parseAppId , AppConfig.parseClientKey ได้จากขั้นตอนที่ 1
AppConfig.parseServer = “https://parseapi.back4app.com”
1 2 3 4 5 6 7 8 9 10 11 |
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let configuration = ParseClientConfiguration { $0.applicationId = AppConfig.parseAppId $0.clientKey = AppConfig.parseClientKey $0.server = AppConfig.parseServer } Parse.initialize(with: configuration) return true } |
3. สร้าง function loadData สำหรับ load ข้อมูล
Network.isConnectedToNetwork() เป็น method ที่สร้างเอง เอาไว้ check การเชื่อมต่อกับอินเตอร์เน็ต
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
func loadData(){ if(Network.isConnectedToNetwork()){ let query = PFQuery(className: "PostImage") // ระบุ class name ที่ต้องการอ่านข้อมูล query.whereKey("pi_status", equalTo: "recent") // เงื่อนไขในการดึงข้อมูล query.limit = AppConfig.parseLimit // ดึงมากี่ข้อมูล ถ้าไม่ใส่จะมา 100 ข้อมูล // จะ skip กี่ข้อมูล ดึงครั้งแรกจะเป็น 0 ครั้งต่อๆ ไป ก็ skip ตาม self.PostImages.count query.skip = self.parseSkip query.addDescendingOrder("createdAt") // เรียงข้อมูลอันล่าสุด เพิ่มใหม่ มาก่อน query.findObjectsInBackground { (objects: [PFObject]?, error:Error?) in if error == nil { self.PostImages = objects self.recentCollectionView.reloadData() //print("PostImages=\(self.PostImages.count)") } } } } |
4. loadMoreData
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
func loadMoreData(){ if(Network.isConnectedToNetwork()){ self.isLoadMore = true self.loadingIndicator() self.parseSkip = self.PostImages.count let query = PFQuery(className: "PostImage") query.whereKey("pi_status", equalTo: "recent") query.limit = AppConfig.parseLimit query.skip = self.parseSkip query.addDescendingOrder("createdAt") query.findObjectsInBackground { (objects: [PFObject]?, error:Error?) in if error == nil { if objects?.count == 0 { self.delayedStopActivity() self.isLoadMore = true return ; } for obj in objects! { self.PostImages.append(obj) } self.recentCollectionView.reloadData() print("PostImages=\(self.PostImages.count)") self.delayedStopActivity() self.isLoadMore = false } } } } |
บรรทัดที่ 8 , 13 กำหนดจำนวนข้อมูลที่จะ skip
บรรทัดที่ 18-22 check ค่าถ้าไม่มีข้อมูลให้ load แล้ว
บรรทัดที่ 24-26 วน loop เอาข้อมูลไปเพิ่มใน self.PostImages
self.loadingIndicator() แสดงตัว loading
self.delayedStopActivity() หยุดตัว loading