Promo Lebaran, Kelas Online CODEPOLITAN Cukup Bayar Setengah Harga KLAIM PROMO
Lebih terarah belajar coding melalui Kelas Online dan Interactive Coding Lihat Materi Belajar

Cara Query Data Mobile Aplikasi iOS dengan Menggunakan Mesosfer

Ditulis oleh Ikrar Ilyas, dipublikasi pada 12 Jan 2017 dalam kategori Tutorial
Cara Query Data Mobile Aplikasi iOS dengan Menggunakan Mesosfer  - CodePolitan.com

Cara Query Data Mobile Aplikasi iOS dengan Menggunakan Mesosfer merupakan tahap lanjutan dari tutorial sebelumnya. Kalau kalian ketinggalan, kalian bisa membaca di website Codepolitan.

Seperti biasa tutorial ini sebelumnya telah di upload di Mesosfer dengan bahasa Inggris. Saya upload ulang disini dengan bahasa Indonesia agar lebih mudah dipahami.

Untuk detail tentang Mesosfer, kalian bisa cek di Mesosfer Documentation. Tutorial ini akan tersedia dalam Objective-C dan Swift untuk memudahkan developer.

1. Yang Perlu Disiapkan.

Untuk mengikuti Tutorial ini, Anda harus menyiapkan beberapa hal seperti:

  • Pastikan Anda memiliki akun di Mesosfer Backend as a Service.
  • Install Xcode terakhir. Di tutorial ini, penulis menggunakan XCode 8.1 (8B62).
  • Anda bisa download code dari sesi sebelumnya disini.

2. Mulai!

2.1 Design views
Tambahkan static cell untuk Query Data menu pada Main View. Lalu buat query data view pada Main.storyboard kalian. Hubungkan new menu dan query data view dengan Triggered Segues -> Selection -> Show seperti berikut:

Query User terdiri dari:
UITableViewController, Digunakan untuk menampilkan data list.
UINavigationItem, Digunakan untuk menampilkan title of current view.

2.2 Completing the Codes
2.2.1 Code lengkap QueryDataViewController:

Objective-C

#import <UIKit/UIKit.h>

@interface QueryDataViewController : UITableViewController

@end</pre>
<ul>
    <li>.m file</li>
</ul>
<pre class="theme:xcode lang:objc decode:true">#import "QueryDataViewController.h"
#import "UIViewController+Helper.h"
#import <Mesosfer/Mesosfer.h>

@interface QueryDataViewController ()

@property (nullable, nonatomic, strong) NSMutableArray<MFData *>* datas;

@end

@implementation QueryDataViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.tableView.estimatedRowHeight = 100;
    self.tableView.rowHeight = UITableViewAutomaticDimension;
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    [self queryData];
}

- (void)queryData {
    NSString *bucket = @"Beacon";
    MFQuery *query = [MFData queryWithBucket:bucket];
    [query findAsyncWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) {
        if (error) {
            [self showErrorWithTitle:@"Query data failed" error:error handler:nil];
            return;
        }

        if (objects) {
            self.title = [NSString stringWithFormat:@"Query '%@'", bucket];
            self.datas = [NSMutableArray arrayWithArray:objects];
            [self.tableView reloadData];
        }
    }];
}

#pragma mark - UITableViewDelegate

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    if (self.datas) {
        return self.datas.count;
    }

    return 0;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 1;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    if (self.datas) {
        return self.datas[section].objectId;
    }
    return nil;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellData" forIndexPath:indexPath];

    if (self.datas) {
        MFData *data = self.datas[indexPath.section];

        if ([data dictionary]) {
            cell.textLabel.text = [NSString stringWithFormat:@"%@", [data dictionary]];
        }
    }

    return cell;
}

@end

Swift

import Foundation
import UIKit
import Mesosfer

class QueryDataViewController: UITableViewController {
    var datas: [MFData]?

    override func viewDidLoad() {
        super.viewDidLoad()

        self.tableView.estimatedRowHeight = 100
        self.tableView.rowHeight = UITableViewAutomaticDimension
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        self.querydata()
    }

    func querydata() {
        let bucket = "Beacon"
        MFData.query(withBucket: bucket).findAsync { (datas, error) in
            if let e = error as? NSError {
                self.showError(title: "Query data failed", error: e)
                return
            }

            if let datas = datas as? [MFData] {
                self.title = "Query '\(bucket)'"
                self.datas = datas
                self.tableView.reloadData()
            }
        }
    }
}

extension QueryDataViewController {
    override func numberOfSections(in tableView: UITableView) -> Int {
        if let datas = self.datas {
            return datas.count
        }
        return 0
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        if let datas = self.datas {
            return datas[section].objectId
        }
        return nil
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cellData", for: indexPath)

        if let datas = self.datas {
            let data = datas[indexPath.section]

            if let dict = data.dictionary() as? [String:AnyObject] {
                cell.textLabel?.text = "\(dict)"
            }
        }

        return cell
    }
}

3. Kesimpulan

Demikian tutorial tentang cara query data mobile aplikasi iOS dengan menggunakan Mesosfer kali ini. Semoga tutorial ini membantu para developer iOS.

Masih ada tutorial selanjutnya. Mohon bersabar ya.


background

Gabung CodePolitan Membership

Ingin belajar coding secara online dengan lebih terarah? Gabung sekarang dalam program Premium Membership di CodePolitan. Dapatkan ratusan modul belajar pemrograman premium dalam beragam format dengan materi silabus lengkap dan tersusun rapi dari awal hingga mahir.

LIHAT MATERI BELAJAR GABUNG MEMBERSHIP