ابتدا برای ساخت پروژه نرم افزار Xcode را باز کرده و Create A New Xcode Project را کلیک می کنیم.
سپس نوع پروژه را Single View Application انتخاب کرده
سپس در پنجره باز شده قسمت Product Name، نام پروژه را RealmDbCrud تعیین کرده، در قسمت Organization ، نام شرکت، در قسمت Organization Identifier نام Domain خود را به صورت برعکس و بقیه تنظیمات را در حالت پیشفرض قرار میدهیم.
در صفحه بعد مسیر ذخیره پروژه را انتخاب کرده و Create را کلیک می کنیم
بعد از ساخت محیط Xcode را مشاهده می کنید
در ادامه نرم افزار CocoaPods را برای دانلود Realm باز میکنیم.
CocoaPods معادل Package Manager Console در ویژوال استودیو است.
از منوی File گزینهی New Podfile From Xcode project را کلیک کرده و فایل پروژه Xcode را برای ساخت Podfile انتخاب میکنیم.
در ادامه پنجرهی زیر را مشاهده می کنید.
سپس Library مربوط به Realm را اضافه میکنیم.
[c]
pod "RealmSwift"
[/c]
و با فشردن کلید Install عمل دانلود و نصب انجام میشود.
بعد از نصب پنجره زیر را مشاهده میکنید.
همان طور که در متن این تصویر بعد از نصب Realm میبینید بایستی Xcode را بسته و از این پس فایل RealmDbCrud.xcworkspace را که در همان مسیر پروژه ساخته شده است، باز کنیم.
حال از منوی File -> New -> File یک کلاس (Entity ) به نام User به پروژه اضافه میکنیم.
و کد زیر را مینویسیم.
[c]
//
// User.swift
// RealmDbCrud
//
// Created by MacBook on 7/20/1396 AP.
// Copyright © 1396 AP NsSwift.ir All rights reserved.
//
import Foundation
import RealmSwift
class User: Object
{
override class func primaryKey() -> String? {
return "Id"
}
@objc dynamic var Id: Int = 0
@objc dynamic var FirstName = ""
@objc dynamic var LastName = ""
}
[/c]
توجه داشته باشید Entityمورد نظر باید از کلاس Object ارث بری کند و همچنین فانکشن Primary Key را برای بازگرداندن نام کلید اصلی Override میکنیم.
در ادامه کلاسی به نام UserRepository با کد زیرساخته
[c]
//
// UserRepository.swift
// RealmDbCrud
//
// Created by MacBook on 7/20/1396 AP.
// Copyright © 1396 AP NsSwift.ir . All rights reserved.
//
import UIKit
import Foundation
import RealmSwift
class UserRepository {
var realm: Realm;
init()
{
do
{
realm = try! Realm()
}
catch
{
}
}
func insert(item: User)
{
do
{
try realm.write {
realm.add(item)
}
}
catch
{
print(error.localizedDescription)
}
}
func Update(item: User)
{
do
{
try realm.write {
realm.add(item, update:true)
}
}
catch
{
print(error.localizedDescription)
}
}
func Delete(item: User)
{
do
{
try realm.write {
realm.delete(item)
}
}
catch
{
print(error.localizedDescription)
}
}
func FirstOrDefaultById(id: Int)-> User?
{
do
{
let object = realm.objects(User.self).filter(“Id = \(id)”).first
return object;
}
catch
{
print(error.localizedDescription)
}
return nil
}
}
[/c]
در سازندهی کلاس، متغییر Realm را با نمونهای از کلاس Realm مقداردهی میکنیم.
در ادامه کنترلر ViewController.swift را باز کرده و در فانکشن ViewDidLoad کد زیر را مینویسیم.
[c]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let userRep = UserRepository()
var user = User()
user.Id = 1
user.FirstName = "Younos"
user.LastName = "Baghaee Moaghaddam"
userRep.insert(item: user)
let firstUser = userRep.FirstOrDefaultById(id: 1)
print("this is \(firstUser?.Id) \(firstUser?.FirstName) \(firstUser?.LastName)")
var userToUpdate = User()
userToUpdate.Id = 1
userToUpdate.FirstName = "Younos 2"
userToUpdate.LastName = "Baghaee Moghaddam 2"
userRep.Update(item: userToUpdate)
let firstUpdatedUser = userRep.FirstOrDefaultById(id: 1)
print("this is \(firstUpdatedUser?.Id) \(firstUpdatedUser?.FirstName) \(firstUpdatedUser?.LastName)")
userRep.Delete(item: userToUpdate)
}
[/c]
ابتدا Instanceی از کلاس UserRepository ایجاد کرده و پس از ساخت نمونهای از User و مقدار دهی Propertyهای آن، با استفاده از UserRep.Insert اقدام به ثبت آن کردیم.
در ادامه با استفاده از فانکشن FirstOrDefaultById رکورد درج شده را واکشی کرده و نمایش میدهیم.
سپس با استفاده از فانکشن Update رکورد جاری را بروز رسانی کرده و دوباره رکورد بروز شده را نمایش میدهیم.
در اینجا میتوانید از یک Mapper برای Map کردن Object مورد نظربه یک Objectجدید و سپس تغییر مقادیر آن اقدام کنید.
سپس Break Pointی در ابتدای کدهای نوشته شده قرار میدهیم و پروژه را اجرا میکنیم.
در قسمت Debug Area نتیجه اجرای کد را میبینید.
2 دیدگاه
حسین خوش رفتار منفرد
ممنونم از این مطلب فوق العاده کاربردی
مرتضی سفیدی
با سلام و درود
خیلی عالی بود
ممنون مهندس