Cara Query User untuk Mobile Aplikasi iOS Menggunakan Mesosfer

Profile
Ikrar Ilyas

5 Januari 2017

Cara Query User untuk Mobile Aplikasi iOS Menggunakan Mesosfer

Pada tutorial ini, saya akan melanjutkan tutorial sebelumnya dan memulai cara query user mobile aplikasi iOS menggunakan mesosfer.

Seri tutorial ini telah di post di Mesosfer, tetapi untuk mempermudah, saya post dengan menggunakan bahasa Indonesia. Kalau kalian baru mengikuti tutorial ini, silakan cek tutorial sebelumnya tentang Fetch User di codepolitan.

Untuk detail apa itu Mesosfer, silakan kalian mengunjungi dokumentasi Mesosfer.

1. Hal yang Perlu disiapkan

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

2. Mulai!

2.1 Design View

Tambahkan static cell untuk Query User menu pada main view. Kemudian buat query user view pada Main.storyboard kalian. Connect menu baru dan query user view dengan Triggered Segues -> Selection -> Show seperti berikut:

query user

Tampilan Query User terdiri dari:

  • UITableViewController, digunakan untuk menampilkan list user.
  • UISearchBar, digunakan untuk filter list user berdasarkan nama awal user.
  • UINavigationItem, digunakan untuk menampilkan title dari current view.

2.2 Referencing outlets

Tambahkan QueryUserViewController class pada XCode Project Anda, lalu set UISearchBar delegate ke QueryUserViewController.

query user 1

2.3 Lengkapi Code

2.3.1 Code lengkap QueryViewController:

Objective-C

#import <UIKit/UIKit.h>

@interface QueryUserViewController : UITableViewController

@end

  • .m file
#import "QueryUserViewController.h"
#import "UIViewController+Helper.h"
#import <Mesosfer/Mesosfer.h>

@interface QueryUserViewController () <UISearchBarDelegate>

@property (nullable, nonatomic, strong) NSArray<MFUser > users;

@end

@implementation QueryUserViewController

  • (void)viewDidLoad { [super viewDidLoad];

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

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

    [self queryUserWithUsername:nil]; }

  • (void)queryUserWithUsername:(NSString*)username { MFQuery *query = [MFUser query]; if (username) { [query whereKey:@"firstname" equalTo:username]; } [query findAsyncWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) { if (error) { [self showErrorWithTitle:@"Query user failed" error:error handler:nil]; return; }

      if (objects) {
          self.users = objects;
          [self.tableView reloadData];
      }
    

    }]; }

#pragma mark - UITableViewDelegate

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

    return 0; }

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

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

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

    if (self.users) { MFUser *user = self.users[indexPath.section];

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

    }

    return cell; }

#pragma mark - UISearchBarDelegate

  • (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { searchBar.showsCancelButton = YES; [self queryUserWithUsername:searchBar.text]; }

  • (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { searchBar.showsCancelButton = NO; searchBar.text = nil; [self queryUserWithUsername:nil]; }

@end

Swift

import Foundation
import UIKit
import Mesosfer

class QueryUserViewController: UITableViewController {

var users: [MFUser]?

override func viewDidLoad() {
    super.viewDidLoad()
    
    self.tableView.estimatedRowHeight = 100
    self.tableView.rowHeight = UITableViewAutomaticDimension
}

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

func queryUser(firstname: String? = nil) {
    let query = MFUser.query()
    if let firstname = firstname {
        query.whereKey("firstname", equalTo: firstname)
    }
    query.findAsync { (users, error) in
        if let e = error as? NSError {
            self.showError(title: "Query user failed", error: e)
            return
        }
        
        if let users = users as? [MFUser] {
            self.users = users
            self.tableView.reloadData()
        }
    }
}

}

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

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

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

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -&gt; UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cellUser", for: indexPath)
    
    if let users = self.users {
        let user = users[indexPath.section]
        
        if let dict = user.dictionary() as? [String:AnyObject] {
            cell.textLabel?.text = "\(dict)"
        }
    }
    
    return cell
}

}

extension QueryUserViewController: UISearchBarDelegate { func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { searchBar.showsCancelButton = true self.queryUser(firstname: searchBar.text) }

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    searchBar.showsCancelButton = false
    searchBar.text = nil
    self.queryUser()
}

}

3. Kesimpulan

Cara mudah membuat query user pada mobile applikasi iOS. Tutorial sederhana ini semoga bisa membantu iOS developer atau teman-teman yang juga baru belajar mengembangkan mobile aplikasi iOS.

Demikian tutorial kali ini. Semoga bermanfaat!

Tags:

What do you think?

Reactions