Cara Query Data Mobile Aplikasi iOS dengan Menggunakan Mesosfer

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.

Dilihat kali

Is this helpful?

Share This Post