मेरे दायरे में मेरे पास RealmClassA है, जिसमें कई पंक्तियों की जानकारी है जिसे उपयोगकर्ता सिम्युलेटर में चलते समय सफलतापूर्वक जोड़ सकता है।

मैं कुछ डेटा को TableViewController में customCell में प्रदर्शित करने के लिए दायरे (तकनीकी शब्द Query?!) से डेटा पढ़ने की कोशिश कर रहा हूं जिसमें कई UILabels हैं। कस्टमसेल TableViewCell प्रकार का है।

उदाहरण के लिए मैंने केवल कुछ गुण और लेबल शामिल किए हैं।

मैं उस पंक्ति प्रविष्टि के लिए propertyB कॉलम में अन्य डेटा के साथ, propertyA कॉलम से डेटा को UIlabel के वर्णानुक्रम में प्रदर्शित करना चाहता हूं। नीचे चित्र देखें।

Rough design of what is currently on Storyboard and What I would like to display during app run

TableViewController है;

import UIKit
import RealmSwift


class TableViewController: UITableViewController {
      
    let realm = try! Realm()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
    }

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
        //After solving this question, this numberOfSections return will return the count of the number of unique strings that the propertyB column that RealmClassA houses. 
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
      
  return realm.objects(RealmClassA.self).count
        // this DOES return a number of cells that matches the number of entries (rows) in RealmClassA. 

    }
    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "reusableCellID", for: indexPath)

    // this is where I have hit a brick wall and guidance is needed.        

        return cell
    }
}

customCell प्रकार का है TableViewCell;

import UIKit
import RealmSwift

class TableViewCell: UITableViewCell {
    
    @IBOutlet weak var propertyAGoesHere: UILabel!
    @IBOutlet weak var propertyBGoesHere: UILabel!
    @IBOutlet weak var propertyCGoesHere: UILabel!
//etc.
    
    let realm = try! Realm()
    

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

मैं निम्नलिखित का उपयोग करके आउटपुट में प्रविष्टियों की संख्या गिनने में सक्षम हूं;

print("The number of RealmClassA records in memory is",realm.objects(RealmClassA.self).count)

यह प्रिंट करता है The number of RealmClassA in memory is 10

जब मैं संपत्ति ए कॉलम में केवल स्टिंग के नाम मुद्रित करने का प्रयास करता हूं;

    let allEntriesArray = allEntriesList.map{$0.PropertyA}
            
    print("Querying all propertyA entries in realm \(allEntriesArray)")

यह प्रिंट करता है

Querying all propertyA entries in realm LazyMapSequence<Results<RealmClassA>, String>(_base: Results<RealmClassA> <0x7fd2f8cb4f20> (
    [0] RealmClassA {
        propertyA = Random Words for Filler
        propertyB = More Random words to fill the property information;
        //etc. 
    },
// this repeats for all entries in the RealmClassA. 

सहायता की आवश्यकता है

  1. तालिका दृश्य में प्रदर्शित करने के लिए दायरे से डेटा को प्रभावी ढंग से कैसे एक्सेस करें। मैं स्पष्ट रूप से लगभग वहाँ हूँ, क्योंकि मैं RealmClassA में प्रविष्टियों की संख्या के लिए कक्षों की सही संख्या प्रदर्शित कर सकता हूँ।

  2. क्या मेरे पास लाइन के साथ कुछ जटिल है।

मैंने निम्नलिखित स्रोतों का उपयोग बिना किसी लाभ के मदद के रूप में किया है।

https://www.youtube.com/watch?v=0WOd6GVPMb0

UITableView दायरे और स्विफ्ट का उपयोग करते हुए एकाधिक अनुभागों के साथ

दायरे और स्विफ्ट का उपयोग करके एकाधिक अनुभागों के साथ संख्याऑफरोइनसेक्शन और सेलफॉररोएट को पॉप्युलेट करने के लिए क्षेत्र को क्वेरी करना

दायरे स्विफ्ट में प्राथमिक कुंजी क्वेरी से लौटाए गए ऑब्जेक्ट के गुणों का उपयोग कैसे करें

और मैंने यहां Realm.io के दस्तावेज़ों को खंगाला है

https://academy.realm.io/posts/realm-list-new-superpowers-array-primitives/

https://realm.io/docs/swift/latest/#getting-started< /a> सूची अनुभाग में

https://realm.io/docs/swift/latest/api/Classes/List.html

अपडेट करें

'संपत्ति ए' के ​​किसी भी उदाहरण को 'संपत्ति ए' में बदलना।

स्पष्टता के लिए मुख्य प्रश्न। तालिकादृश्य कक्षों के UILabels के अंदर वर्णानुक्रम में, दायरे में सहेजे गए एक कॉलम से सभी डेटा कैसे प्रदर्शित करें।

पोस्ट की लंबाई के लिए क्षमा याचना, मुझे बहुत सारे प्रश्न दिखाई दे रहे हैं जिन पर लोगों ने सभी जानकारी मांगी है, इसलिए मैंने अपनी पूरी कोशिश की है!

अपडेट 2

उत्तर पोस्ट करने के बाद स्पष्टता के लिए अनावश्यक जानकारी को हटाना

0
24SGR 29 जून 2020, 20:56

1 उत्तर

सबसे बढ़िया उत्तर

@जय की मदद और इस वेबसाइट के लिए धन्यवाद;
https://www.ralfebert.de/ios-examples/uikit /uitableviewcontroller/custom-cells/, मैंने पाया कि मैं cellForRowAt func के अंत से as! customCell गायब था।

यहां बताया गया है कि अगर कोई इसे और नीचे देख रहा है तो उसे कैसा दिखना चाहिए।

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "reusableCellID", for: indexPath) as! customCell

        let itemsToDisplay = realm.objects(RealmClassA.self).sorted(byKeyPath: "propertyA")[indexPath.row]
        
        cell.propertyADisaplyLabel?.text = itemsToDisplay.propertyA
        cell.propertyBDisplayLabel?.text = itemsToDisplay.propertyB
        cell.propertyCDisplayLabel?.text = itemsToDisplay.propertyC
        

        return cell
    }

संपादित करें

तालिका सेट करना macOS पर डेटा स्रोत देखें - iOS बहुत समान है। यह 10 वस्तुओं के साथ डेटा स्रोत सेट करता है। यह उदाहरण वास्तव में डेटा स्रोत का उचित उपयोग दिखाने के लिए है।

class ViewController: NSViewController, NSTableViewDelegate, NSTableViewDataSource {
    
    var dataArray = [String]()
    
    @IBOutlet weak var myTableView: NSTableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        for i in 0...9 {
            let s = "row_\(i)"
            self.dataArray.append(s)
        }
        
        self.myTableView.delegate = self
        self.myTableView.dataSource = self
        self.myTableView.reloadData()
    }

    func numberOfRows(in tableView: NSTableView) -> Int {
        return self.dataArray.count
    }
    
    func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
       let identifier = NSUserInterfaceItemIdentifier("MyCellView")
       guard let cell = tableView.makeView(withIdentifier: identifier, owner: self) as? NSTableCellView else {return nil}
    
       cell.textField?.stringValue = self.dataArray[row]
    }

ध्यान दें कि NSTableCellView (टेबल सेल व्यू) पहचानकर्ता MyCellView पर सेट है।

1
Jay 2 जुलाई 2020, 21:04