Computer >> कंप्यूटर >  >> स्मार्टफोन्स >> iPhone

स्विफ्ट का उपयोग करके आईओएस सीआरयूडी ऐप में रीयलम डेटाबेस कैसे जोड़ें

सभी को नमस्कार! इस लेख में हम सीखेंगे कि आईओएस ऐप में रियलम डेटाबेस कैसे जोड़ा जाए।

हम एक सरल टूडू ऐप बनाएंगे ताकि आप सीख सकें कि रियलम डेटाबेस में सीआरयूडी (क्रिएट, रीड, अपडेट, डिलीट) ऑपरेशन कैसे करें।

रियलम क्या है?

स्विफ्ट का उपयोग करके आईओएस सीआरयूडी ऐप में रीयलम डेटाबेस कैसे जोड़ें

Realm एक ओपन-सोर्स मोबाइल डेटाबेस है जो डेवलपर के अनुकूल और उपयोग में आसान है। आप इसे आईओएस ऐप में कोर डेटा के विकल्प के रूप में भी इस्तेमाल कर सकते हैं।

Realm एक क्रॉस प्लेटफ़ॉर्म मोबाइल डेटाबेस है, जिसका अर्थ है कि आप इसका उपयोग देशी Android और iOS ऐप में और क्रॉस प्लेटफ़ॉर्म ऐप में भी कर सकते हैं जैसे कि रिएक्ट नेटिव का उपयोग करके बनाए गए। यह ऑब्जेक्टिव-सी, स्विफ्ट, जावा, कोटलिन, सी#, और जावास्क्रिप्ट को सपोर्ट करता है।

अपने iOS प्रोजेक्ट में दायरे को कैसे सेट करें

हम एसपीएम (स्विफ्ट पैकेज मैनेजर), कोको पॉड्स या कार्थेज का उपयोग करके अपने आईओएस प्रोजेक्ट में दायरे को जोड़ सकते हैं। यहाँ, हम अपने iOS प्रोजेक्ट में Realm पॉड जोड़ने के लिए Cocoa Pods का उपयोग करने जा रहे हैं।

  1. Xcode खोलें और कोर डेटा का उपयोग किए बिना UIKit और Swift के साथ एक रिक्त iOS ऐप प्रोजेक्ट बनाएं।
  2. अब Xcode को बंद करें और टर्मिनल को खोलें। टर्मिनल का उपयोग करके अपनी परियोजना निर्देशिका पर नेविगेट करें।
  3. पॉडफाइल बनाने के लिए निम्न कमांड चलाएँ।
pod init

4. अब जब आप निर्देशिका की सामग्री को सूचीबद्ध करते हैं तो आप देख सकते हैं कि एक नया पॉडफाइल है। किसी भी टेक्स्ट एडिटर का उपयोग करके फ़ाइल खोलें (यहां मैंने विम का उपयोग किया है)। अपने पॉडफाइल को संपादित करें ताकि यह नीचे की छवि के समान दिखे। पॉडफाइल को सेव और बंद करें।

स्विफ्ट का उपयोग करके आईओएस सीआरयूडी ऐप में रीयलम डेटाबेस कैसे जोड़ें

अब जब हमने दायरे डीबी के लिए निर्भरता निर्दिष्ट कर दी है, तो हम नीचे दिए गए आदेश को चलाकर निर्भरता स्थापित कर सकते हैं:

pod install 
स्विफ्ट का उपयोग करके आईओएस सीआरयूडी ऐप में रीयलम डेटाबेस कैसे जोड़ें

जैसा कि आप देख सकते हैं, हमने अपने iOS प्रोजेक्ट में Realm DB निर्भरता को सफलतापूर्वक जोड़ लिया है। अब हमारे प्रोजेक्ट को Xcode में खोलने के लिए निम्न कमांड चलाएँ।

open YOUR_APP_NAME.xcworkspace

नोट:Xcode खोलने के बाद, सुनिश्चित करें कि आपने Command+B दबाकर अपना प्रोजेक्ट बनाया है।

अपने यूजर इंटरफेस को दायरे में कैसे डिजाइन करें

हम अपने ऐप के यूआई को सरल रखने जा रहे हैं। मेन.स्टोरीबोर्ड खोलें और एक प्रोटोटाइप सेल के साथ एक टेबल व्यू जोड़कर एक साधारण यूआई बनाएं जैसा कि नीचे दिखाया गया है। फिर एक नेविगेशन नियंत्रक एम्बेड करें और ViewController.swift फ़ाइल में तालिकादृश्य के लिए IBOutlets बनाएं:

स्विफ्ट का उपयोग करके आईओएस सीआरयूडी ऐप में रीयलम डेटाबेस कैसे जोड़ें

रियलम में डेटा मॉडल कैसे बनाएं

हमारे टूडू ऐप में, प्रत्येक कार्य का एक कार्य नाम और एक कार्य आईडी होता है। हम टूडू टास्क का प्रतिनिधित्व करने के लिए एक मॉडल क्लास बनाने जा रहे हैं। प्रोजेक्ट नेविगेटर में राइट क्लिक करें और एक नई स्विफ्ट फ़ाइल बनाएं, और नीचे दिया गया कोड जोड़ें।

import Foundation
import RealmSwift


class ToDoTask:Object
{
    @objc dynamic var tasknote: String?
    @objc dynamic var taskid: String?
}

उसे हमने ToDoTask नाम से अपना मॉडल वर्ग बनाया। यह ऑब्जेक्ट क्लास को इनहेरिट करता है जो एक ऐसा वर्ग है जो RealmDB के साथ आता है। यह वर्ग डेटाबेस में इस मॉडल वर्ग का उपयोग करके बनाए गए डेटा को सहेजने की सभी प्रक्रियाओं को संभालता है।

हमने दो गुण भी जोड़े:tasknote , जो किया जाने वाला कार्य है, और taskid - दोनों प्रकार की स्ट्रिंग। @objc इसका मतलब है कि आपका स्विफ्ट कोड उद्देश्य सी और dynamic . के लिए दृश्यमान है इसका मतलब है कि आप उद्देश्य सी गतिशील प्रेषण का उपयोग करना चाहते हैं।

मूल CRUD ऐप फ़ंक्शन

हमारा ऐप निम्नलिखित कार्य करेगा:

  1. AlertViewController का उपयोग करके उपयोगकर्ता से इनपुट प्राप्त करें।
  2. डेटाबेस में इनपुट जोड़ें और तालिका दृश्य में भी।
  3. उपयोगकर्ता को अपना इनपुट संपादित करने दें।
  4. तालिका दृश्य और डेटाबेस दोनों से डेटा निकालने के लिए एक पंक्ति को हटाने के लिए स्वाइप करें।
  5. डेटाबेस से सभी डेटा (यदि मौजूद है) प्राप्त करें और इसे तालिका दृश्य में प्रदर्शित करें।

AlertViewController का उपयोग करके उपयोगकर्ता से इनपुट कैसे प्राप्त करें

ViewController.swiftखोलें और नीचे दिए गए कोड को ViewDidLoad() . के अंदर जोड़ें तरीका। और addTask() . नामक एक नया फ़ंक्शन बनाएं और उपयोगकर्ता से इनपुट प्राप्त करने के लिए टेक्स्ट बॉक्स के साथ अलर्ट व्यू कंट्रोलर प्रदर्शित करने के लिए कोड जोड़ें।

अब जब दायां बार बटन दबाया जाता है तो यह addTask() . पर कॉल करेगा फ़ंक्शन जो alertviewcontroller . प्रदर्शित करेगा उपयोगकर्ता इनपुट प्राप्त करने के लिए टेक्स्ट फ़ील्ड के साथ।

navigationItem.rightBarButtonItem = UIBarButtonItem(image: .add, style: .done, target: self, action: #selector(addTask))

navigationController?.navigationBar.prefersLargeTitles = true

title = "RealmDB"
@objc
    func addTask()
    { 
        let ac = UIAlertController(title: "Add Note", message: nil, preferredStyle: .alert)
        
        ac.addTextField(configurationHandler: .none)
        
        ac.addAction(UIAlertAction(title: "Add", style: .default, handler: { (UIAlertAction) in
          
              if let text = ac.textFields?.first?.text
            {
                print(text)
            }
            
        }))
        ac.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
        present(ac, animated: true, completion: nil)
    }

डेटाबेस और तालिका दृश्य में इनपुट कैसे जोड़ें

डेटा को दायरे में सहेजने के लिए, पहले हमें दायरे के लिए एक उदाहरण प्राप्त करना होगा जिसके माध्यम से हम सीआरयूडी संचालन के लिए आवश्यक सभी विधियों तक पहुंच सकते हैं। ViewController.swift . में Realm प्रकार की प्रॉपर्टी बनाएं फ़ाइल करें और इसे viewDidLoad() . में इनिशियलाइज़ करें विधि।

 var realmDB: Realm!
 override func viewDidLoad() {
        super.viewDidLoad()
        
        navigationItem.rightBarButtonItem = UIBarButtonItem(image: .add, style: .done, target: self, action: #selector(addTask))
        navigationController?.navigationBar.prefersLargeTitles = true
        title = "RealmDB"
        
        realmDB = try! Realm()
       
    }

हमारे DataModel (ToDoTask) प्रकार की एक खाली सरणी बनाएं। यह सरणी उन सभी कार्यों को रखेगी जिन्हें तालिका दृश्य और डेटाबेस में जोड़ने की आवश्यकता है।

अब addTask() . के अंदर फ़ंक्शन ऐड एक्शन क्लोजर को संशोधित करता है ताकि यह उपयोगकर्ता इनपुट प्राप्त करे और उस इनपुट के लिए एक यादृच्छिक आईडी बनाता है। फिर इसे हमारे एरे में जोड़ें और इसे डेटाबेस में सेव करें।

var tasks = [ToDoTask]()
 if let text = ac.textFields?.first?.text
            {
            	//Add data to data model array
                let t = ToDoTask()
                t.taskid = UUID().uuidString
                t.tasknote = text
                self.tasks.append(t)
                
                //Add data to database
                try! self.realmDB.write {
                    self.realmDB.add(t)
                }
                //Update table view UI
                self.tasktv.reloadData()
            }

अब जब आप ऐप चलाएंगे तो डेटा डेटाबेस में सेव हो जाएगा। लेकिन यह तालिका दृश्य में नहीं दिखाई देगा क्योंकि हमने प्रतिनिधि विधियों को लागू नहीं किया है।

ViewController क्लास को UITableViewDelegate लागू करने दें और UITableViewDataSource प्रोटोकॉल और प्रोटोकॉल स्टब्स जोड़ें।

अब numberOfRowsInSection . के अंदर विधि, हमारे कार्य सरणी की गिनती लौटाती है जो तालिका दृश्य में जोड़े जाने वाली पंक्तियों की संख्या देती है। यह कार्य सरणी में तत्वों की संख्या के बराबर है।

 func tableView(_ tableView: UITableView, numberOfRowsInSection section: 
 Int) -> Int 
 {
        return tasks.count;
 }

अगली चीज़ जो हमें करने की ज़रूरत है वह है प्रत्येक पंक्ति में सामग्री निर्दिष्ट करना। हम cellForRowAt . का उपयोग करके ऐसा कर सकते हैं प्रतिनिधि विधि। यहां हम पहचानकर्ता का उपयोग करके एक सेल को हटाते हैं जिसका हमने स्टोरीबोर्ड में उल्लेख किया है और लेबल टेक्स्ट को टास्क ऐरे एलिमेंट टास्कनोट प्रॉपर्टी के रूप में निर्दिष्ट करते हैं।

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
        {
            cell.textLabel?.text = tasks[indexPath.row].tasknote
            return cell
        }
        return UITableViewCell()
    }

उपयोगकर्ताओं को अपना इनपुट संपादित करने की अनुमति कैसे दें

अब हमें उपयोगकर्ता को अपने दर्ज किए गए कार्यों को संपादित करने और डेटाबेस और UI दोनों में परिवर्तनों को अपडेट करने की अनुमति देनी होगी। हम उपयोगकर्ता से इनपुट प्राप्त करने के समान तरीकों का उपयोग करके ऐसा कर सकते हैं। didSelectRowAt लागू करें प्रतिनिधि विधि जिसे उपयोगकर्ता द्वारा तालिका दृश्य पंक्ति को टैप करने पर कहा जाएगा।

नीचे दिया गया कोड जोड़ें जो एक AlertViewController प्रदर्शित करता है एक पाठ दृश्य के साथ। फिर दर्ज किए गए टेक्स्ट के साथ सेल की सामग्री को अपडेट करें, और साथ ही डेटाबेस सामग्री को अपडेट करें।

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        let tasktomodify = tasks[indexPath.row]
        let ac = UIAlertController(title: "Update task", message: nil, preferredStyle: .alert)
        
        ac.addTextField(configurationHandler: .none)
        ac.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (UIAlertAction) in
            if let text = ac.textFields?.first?.text
            {
                if(!text.isEmpty)
                {
                try! self.realmDB.write({
                    tasktomodify.tasknote = text
                })
                self.tasktv.reloadData()
                }
            }
        }))
        
        present(ac, animated: true, completion: nil)
    }

पंक्ति को हटाने और हटाने के लिए स्वाइप कैसे करें तालिका दृश्य और डेटाबेस दोनों से डेटा

यहां हम अपने टेबल व्यू में स्वाइप टू डिलीट फीचर को लागू करने जा रहे हैं ताकि उपयोगकर्ता अपने कार्यों को हटा सकें। लेकिन हुड के तहत जब उपयोगकर्ता स्वाइप तालिका दृश्य पंक्ति को हटा देता है तो उसे डेटाबेस, डेटा मॉडल सरणी से डेटा हटा देना चाहिए, और तालिका दृश्य के UI को अपडेट करना चाहिए।

हम प्रतिबद्ध संपादन शैली . को लागू करके ऐसा कर सकते हैं प्रतिनिधि विधि और निम्नलिखित कोड जोड़ना:

 func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
        if editingStyle == .delete
        {
            let tasktoDelete = tasks[indexPath.row]
            try! realmDB.write({
                realmDB.delete(tasktoDelete)
                self.tasks.remove(at: indexPath.row)
                self.tasktv.deleteRows(at: [indexPath], with: .fade)
            })
        }
    }

सभी डेटा कैसे प्राप्त करें (यदि वर्तमान) डेटाबेस से और इसे तालिका दृश्य में प्रदर्शित करें

अब हम अपने पिछले ऑपरेशन को लागू करने जा रहे हैं, पढ़ें। जब भी उपयोगकर्ता ऐप लॉन्च करता है, तो उसे डेटाबेस से डेटा प्राप्त करना चाहिए (यदि डेटा मौजूद है) और इसे तालिका दृश्य में प्रदर्शित करना चाहिए।

हम एक फंक्शन getTodo . बनाकर ऐसा कर सकते हैं व्यू कंट्रोलर स्विफ्ट फ़ाइल में और उसके अंदर निम्नलिखित कोड जोड़ना:

func getTodos()
    {
       //Get all the data from the database
        let notes = realmDB.objects(ToDoTask.self)
        
        //Clear the model data array to prevent duplicates
        self.tasks.removeAll()
        
        /*If the fetched data is not empty then add it to model data array and update the UI */
        if(!notes.isEmpty)
        {
        for n in notes
        {
            
            self.tasks.append(n)
            
        }
            self.tasktv.reloadData()
        }
        
        
    }

बोनस टिप:आईओएस सिम्युलेटर में अपने डेटाबेस कंटेंट को कैसे देखें

अब जब आप अपना ऐप चलाते हैं, तो आप देख सकते हैं कि यह अपेक्षा के अनुरूप काम करता है। लेकिन हम कैसे जांच सकते हैं कि डेटा वास्तव में डेटाबेस में संग्रहीत है या नहीं? हम MongoDB Realm Studio नामक ऐप का उपयोग कर सकते हैं जिसके माध्यम से हम सिम्युलेटर के Realm डेटाबेस में संग्रहीत हमारे डेटा को देख सकते हैं।

ध्यान दें कि यह तरीका तभी काम करता है जब आप iOS सिम्युलेटर का उपयोग करके ऐप का परीक्षण करते हैं

viewDidLoad() . में विधि, कोड की नीचे की पंक्ति जोड़ें जो हमारे ऐप के वास्तविक फ़ाइल पथ को प्रिंट करेगी:

 print(realmDB.configuration.fileURL!)
स्विफ्ट का उपयोग करके आईओएस सीआरयूडी ऐप में रीयलम डेटाबेस कैसे जोड़ें

अब कंसोल में मुद्रित फ़ाइल पथ की प्रतिलिपि बनाएँ, टर्मिनल खोलें, और निम्न आदेश चलाएँ:

open REALM_FILE_PATH_HERE
सुनिश्चित करें कि आपने उपरोक्त आदेश को चलाने से पहले ब्राउज़र से MongoDB Realm Studio डाउनलोड कर लिया है।

अब यह MongoDB Realm Studio में ऐप का RealmFile खोलेगा। यह डेटाबेस में संग्रहीत डेटा को तालिका प्रारूप में प्रदर्शित करेगा।

यदि आप कार्य को संपादित या हटाकर अपने डेटा में परिवर्तन करते हैं, तो परिवर्तन MongoDB Realm Studio ऐप में दिखाई देंगे:

स्विफ्ट का उपयोग करके आईओएस सीआरयूडी ऐप में रीयलम डेटाबेस कैसे जोड़ें

बधाई हो! आपने एक साधारण ऐप बनाया है जो आईओएस ऐप में सीआरयूडी संचालन लागू करता है।


  1. iOS 11 में नोट्स ऐप का उपयोग करके दस्तावेज़ों को कैसे स्कैन करें

    IOS 11 की शुरूआत न केवल नई सुविधाएँ लाती है बल्कि मौजूदा ऐप्स में कार्यक्षमता को भी बढ़ाती है। विशेष रूप से नोट्स ऐप में कुछ ऐसे बदलाव देखे गए हैं जिनके बारे में उपयोगकर्ताओं को जानकारी नहीं हो सकती है। इसलिए इस लेख में, हम आपके iPhone पर पहले से मौजूद नोट्स ऐप और इसकी नई विशेषताओं के बारे में बात क

  1. iOS 11 पर पॉडकास्ट ऐप का उपयोग कैसे करें

    Apple ने आखिरकार महसूस किया कि उसके पॉडकास्ट ऐप को एक बदलाव की जरूरत है और iOS 11 इसे एक नया जीवन देता है। ऐप का बहुप्रतीक्षित विजुअल अपडेट आकर्षक है और यह पॉडकास्ट को जोड़ना और सुनना आसान बनाता है। इसके अलावा, अब यह कुछ पॉडकास्ट की भी सिफारिश करेगा क्योंकि यह आपके स्वाद को जान लेता है। नई सुविधाएं

  1. IOS 11 पर फोटो ऐप में लोगों को कैसे जोड़ें या निकालें

    आईओएस 10 ऐप्पल ने एक क्रांतिकारी फीचर पेश किया जो चेहरों को पहचानता है और लोगों के चेहरों के साथ फोटो व्यवस्थित करने के लिए उनका उपयोग करता है। इसलिए, हर बार जब आपको किसी प्रियजन की सभी तस्वीरें देखनी होती हैं, तो सभी तस्वीरों को पलटने के बजाय, आपको बस उस व्यक्ति की तस्वीर वाले थंबनेल पर क्लिक करना