Studio cảnh giới mongodb

Bởi vậy, hôm nay chúng ta làm điều đó, bằng 1 framework cho database, khá chuyên nghiệp đó là Realm. Vậy cảnh giới là gì? . Tuy nhiên, bạn có thể hiểu nôm na là lĩnh vực giúp bạn lưu trữ tài liệu, lôi kéo ra khi cần thiết. You can add edit delete, can do all the second data you have archive. Rất tiện ích. Để hiểu rõ hơn, vui lòng đọc kỹ tài liệu của vương quốc cho ios tại đây

https. // tài liệu. mongodb. com/vương quốc/sdk/ios/cài đặt/

Trong bài trước, chúng tôi đã thêm tải cho phần tìm kiếm để nó chuyên nghiệp hơn. Vẫn còn vài lỗi nhỏ, nhưng các bạn tự sửa xem nhé. Trong bài viết này, tôi sẽ thêm lĩnh vực vào để lưu trữ toàn bộ kết quả mà bạn đã tìm kiếm trong bộ nhớ. Sau đó mỗi lần tìm kiếm, nếu như nó tìm thấy kết quả đã có trong bộ nhớ, nó sẽ tiến hành lấy kết quả đó và hiển thị vào bảng, thay vì yêu cầu lên mạng

Đầu tiên như những bài trước, bạn phải tải code tại đây

https. //github. com/codetoanbug/MVVMSample. git

Và chuyển qua nhánh bai4 các bạn nhé. Cách chuyển thì xem lại bài đầu tiên nha

Rồi bây giờ cùng bắt đầu làm quen và sử dụng vương quốc bằng 1 cách chuyên nghiệp nào

  1. Xây dựng nhà quản lý lĩnh vực

Studio cảnh giới mongodb
Studio cảnh giới mongodb

Lớp RealmManager

Vui lòng xem xét lớp RealmManager mà tôi đã tạo. Mã nguồn hơi dài, nhưng đừng lo lắng, tôi sẽ phân tích từ từng dòng 1

Ý tưởng của lớp này như sau

  • Tôi muốn tạo 1 lớp quản lý cơ sở dữ liệu có đầy đủ tính năng bổ sung (lưu), sửa (cập nhật), xóa (xóa)
  • Tôi muốn lưu trữ các mô hình kế thừa từ Codable. Bằng công việc này, tôi có thể lưu thẳng kết quả trả về của API từ máy chủ vào vương quốc
  • Mỗi kiểu máy phải có 1 khóa chính để cập nhật. Việc lưu có nghĩa là cập nhật 1 mô hình vào lĩnh vực. Nếu như nó không tồn tại thì thêm mới. Nếu nó đã có thì update vào model đã có sẵn

OK, khi có trình quản lý vương quốc này, các bạn sẽ dễ dàng thực hiện những công việc mà mục tiêu của bài viết đã yêu cầu

Hãy cùng xem mã từng dòng nhé

Đầu tiên để chơi với vương quốc, bạn phải cài đặt vương quốc vào Podfile nhé

Studio cảnh giới mongodb
Studio cảnh giới mongodb

Việc cài đặt rất đơn giản, bằng cách bạn mở Podfile trong dự án rồi thêm dòng 8 vào. Sau đó vào dòng lệnh và cd vào thư mục mã nguồn, nhập. pod install is done

Khi cài đặt xong, bạn tạo 1 tệp có tên là RealmManager. swift, after that add this line on the same

import Realm
import RealmSwift

2 lines on to you can use

/// Version realm database
enum RealmVersion: UInt64 {
    case version1 = 0
}

Dòng trên tôi dùng để cập nhật cơ sở dữ liệu cho lĩnh vực. Mỗi khi tôi chỉnh sửa lại mô hình thì cần di chuyển, liên quan đến cập nhật dữ liệu với mô hình mới. Cái này bạn sẽ quan tâm sau, bài này tôi không nói

Studio cảnh giới mongodb
Studio cảnh giới mongodb

Tôi muốn cập nhật cơ sở dữ liệu theo từ khóa chính nên bạn cần có 1 cái RealmRepresentable bắt buộc phải có 1 khóa chính, tôi đặt tên là uid mà mọi đối tượng Codable muốn sử dụng lĩnh vực đều phải có, tôi sử dụng giao thức để làm việc đó. RealmRepresentable giúp bạn luôn phải có từ khóa chính cho model, đảm bảo model luôn luôn cập nhật mới được. RealmRepresentable this kế thừa từ Object – một lớp của lĩnh vực được sử dụng để xử lý cơ sở dữ liệu giống như mô hình. Nếu bạn đã làm việc với sqlite, thì bạn sẽ thấy điểm ưu việt của vương quốc ở đây, là bạn có thể thao tác với vương quốc như thao tác với mô hình vậy. Không được chọn, xóa… những câu lệnh khó nhằn của sql

Studio cảnh giới mongodb
Studio cảnh giới mongodb

Giao thức các hàm cơ bản của dịch vụ cảnh giới

RealmServiceProtocol là giao thức chứa các chức năng có thể có của 1 trình quản lý. Nhìn vào tên hàm bạn cũng có thể đoán nghĩa của nó không đúng

  • loại thực thể được liên kết. Định nghĩa 1 kiểu hiển thị, giữ chỗ chung giao thức. Nói cách khác nó áp dụng kiểu cụ thể tại thời điểm biên dịch. Nó làm cho code rõ ràng hơn nha. Thực thể chính là mô hình mà chúng ta cần lưu, cụ thể là lớp của mô hình có thể mã hóa kế thừa từ Đối tượng của vương quốc
  • truy vấnTất cả. Hàm này trả về toàn bộ mảng [Thực thể]
  • truy vấn func(có vị ngữ. NSPredicate, sortDescriptor. [NSSortDescriptor]) -> [Thực thể]. Hàm này dùng để truy vấn điều kiện nào đó và sắp xếp theo yêu cầu nào đó
  • func save(thực thể. Thực thể) -> Bool. lưu 1 thực thể vào cơ sở dữ liệu
  • func save(thực thể. [Thực thể]) -> Bool. Lưu 1 mảng thực thể vào cơ sở dữ liệu
  • func xóa(thực thể. Thực thể) -> Bool. Xóa 1 thực thể ra khỏi cơ sở dữ liệu
  • func xóa(thực thể. [Thực thể]) -> Bool. Delete 1 array [Entity] ra khỏi cơ sở dữ liệu
  • func deleteAll() -> Bool. Delete all Entity ra khỏi cơ sở dữ liệu

  3 sai lầm mà các Nhà phát triển iOS thường thắc mắc phải

  5 bài học quý giá về việc phát triển ứng dụng iOS

Ô kê la, vậy là bạn đã hiểu chúng ta sẽ làm gì rồi đúng không? . Nào vào lớp RealmManager để xem nhé

Studio cảnh giới mongodb

Studio cảnh giới mongodb
Studio cảnh giới mongodb

Class RealmManager định nghĩa hơi khác 1 chút so với những gì bạn hay làm. Ở đây ta có toán tử , nghĩa là mọi lớp kế thừa lại lớp này đều phải có tính chất của RealmRepresentable, hay nói cách khác nó phải có khóa chính:

var uid: String { get }

RealmManager kế thừa RealmServiceProtocol, nghĩa là mọi hàm chúng ta vừa nói ở trên đều phải định nghĩa cho nó

  • typealias Entity = T. Ở đây chúng ta định nghĩa kiểu của Entity là T, là RealmRepresentable, tức là các class có tính chất của RealmRepresentable
  • vương quốc. Cấu hình. Configure tham số cho Realm
  • lĩnh vực var. Vương quốc?. lĩnh vực đối tượng mà chúng ta sẽ sử dụng để xử lý các tác vụ với cơ sở dữ liệu
Studio cảnh giới mongodb
Studio cảnh giới mongodb
  • Hàm khởi tạo cấu hình init, trong này chứa công việc xử lý thay đổi mô hình của vương quốc. Bạn có thể xem thêm tại đây để hiểu thêm
  • print(“Tệp 
    Studio cảnh giới mongodb
     url. \(RLMRealmPathForFile(“mặc định. vương quốc”))”). Lệnh này sẽ hiển thị đường dẫn cơ sở dữ liệu của các bạn. Vui lòng tải cái này về để xem.
    https. // tài liệu. mongodb. com/realm-legacy/products/realm-studio/index. html
    Cơ sở dữ liệu hình ảnh như sau.
Studio cảnh giới mongodb
Studio cảnh giới mongodb

Bảng được tạo trong cơ sở dữ liệu địa hạt

Look it na ná table of mysql đúng không các bạn

Studio cảnh giới mongodb
Studio cảnh giới mongodb

Studio cảnh giới mongodb
Studio cảnh giới mongodb

Hàm lấy toàn bộ bảng [Entity]
  • 68->71, if not started being Realm Realm, return void
  • Nếu không thì lấy mảng Entity và trả về
Studio cảnh giới mongodb
Studio cảnh giới mongodb

Ham save Entity
  • If as not started the Realm, thì trả về false
  • Nếu không tiến hành lưu thực thể vào cơ sở dữ liệu theo dạng cập nhật, nghĩa là nếu chưa có thì thêm mới vào, còn nếu đã tồn tại thì cập nhật. Sau đó làm mới lại cơ sở dữ liệu lĩnh vực
  • Giả sử quá trình lưu trữ thất bại, tiến trình bị lỗi. Ở đây các bạn có thể ra lệnh in trong cặp #if DEBUG

Tương tự function save 1 chuỗi “func save(entities. [Entity]) -> Bool” cũng như trên, chỉ khác là lưu 1 mảng vào

Studio cảnh giới mongodb
Studio cảnh giới mongodb

Hàm xóa 1 thực thể
  • Tiến hành tìm thực thể tìm kiếm có từ khóa uid chính, nếu tìm được thì tiến hành xóa và trả về đúng. If not return false
  • Trường hợp xóa lỗi cũng hiển thị lỗi và trả về sai

Tương tự hàm “func delete(entities. [Entity]) -> Bool” dùng để xóa 1 mảng thực thể

Studio cảnh giới mongodb
Studio cảnh giới mongodb

Hàm xóa toàn bộ thực thể
  • Tiến hành xóa toàn bộ thực thể trong cơ sở dữ liệu và trả về đúng. Nếu không xóa thì báo lỗi và trả về sai

Ở đây các bạn để ý mình viết hàm có phần comment ở trên hàm. Nếu bạn muốn nó sinh tự động, bạn có thể đặt con trỏ chuột vào tên hàm và nhấn tổ hợp “Option + Command + /”, khi bạn nhấn vào dấu ?

Studio cảnh giới mongodb
Studio cảnh giới mongodb

Định dạng hướng dẫn chuẩn của Apple

Vì vậy, chúng ta đã hoàn thành cơ sở lớp RealmManager, cơ sở cơ sở để xử lý cơ sở dữ liệu trong cõi

Bài đã hơi dài, nên chúng ta sẽ tạm dừng ở đây. Trong bài viết tiếp theo Mình sẽ hướng dẫn viết lớp RealmGithubService kế thừa từ RealmManager để xử lý dữ liệu trả về từ API nhé