इस प्रोजेक्ट के बारे में

# Realm डेटाबेस के बारे में Realm एक मोबाइल डेटाबेस है जो सीधे फोन, टैबलेट या पहनने योग्य उपकरणों के अंदर चलता है। यह रिपॉजिटरी iOS, macOS, tvOS और watchOS के लिए Realm Swift और Realm Objective-C के स्रोत कोड को रखती है। ## Realm का उपयोग क्यों करें * **डेवलपर्स के लिए सहज:** Realm का ऑब्जेक्ट-ओरिएंटेड डेटा मॉडल सीखना आसान है, इसे ORM की आवश्यकता नहीं है, और यह आपको कम कोड लिखने देता है। * **मोबाइल के लिए निर्मित:** Realm पूर्ण-विशेषताओं वाला, हल्का है, और मेमोरी, डिस्क स्थान और बैटरी जीवन का कुशलता से उपयोग करता है। * **ऑफ़लाइन उपयोग के लिए डिज़ाइन किया गया:** Realm का स्थानीय डेटाबेस डेटा को डिस्क पर संग्रहीत करता है, इसलिए ऐप ऑफ़लाइन और ऑनलाइन दोनों तरह से समान रूप से काम करते हैं। ## ऑब्जेक्ट-ओरिएंटेड: अपने कोड को सुव्यवस्थित करें Realm को सरलता को ध्यान में रखते हुए मोबाइल डेवलपर्स के लिए बनाया गया था। स्वाभाविक, ऑब्जेक्ट-ओरिएंटेड डेटा मॉडल आपको हजारों लाइनों का कोड बचा सकता है। ```swift // अपने मॉडल को नियमित Swift क्लास की तरह परिभाषित करें class Dog: Object { @Persisted var name: String @Persisted var age: Int } class Person: Object { @Persisted(primaryKey: true) var _id: String @Persisted var name: String @Persisted var age: Int // किसी Object फ़ील्ड को दूसरी क्लास की ओर इंगित करके संबंध बनाएं @Persisted var dogs: List<Dog> } // उन्हें नियमित Swift ऑब्जेक्ट की तरह उपयोग करें let dog = Dog() dog.name = "Rex" dog.age = 1 print("name of dog: \(dog.name)") // डिफ़ॉल्ट Realm प्राप्त करें let realm = try! Realm() // राइट ट्रांज़ैक्शन के साथ अपना डेटा आसानी से संग्रहीत करें try! realm.write { realm.add(dog) } ``` ## लाइव ऑब्जेक्ट: रिएक्टिव ऐप बनाएं Realm के लाइव ऑब्जेक्ट का मतलब है कि कहीं भी अपडेट किया गया डेटा स्वचालित रूप से हर जगह अपडेट होता है। ```swift // डिफ़ॉल्ट realm खोलें। let realm = try! Realm() var token: NotificationToken? let dog = Dog() dog.name = "Max" // realm में एक dog बनाएं। try! realm.write { realm.add(dog) } // लिसनर सेट करें और ऑब्जेक्ट नोटिफिकेशन देखें। token = dog.observe { change in switch change { case .change(let properties): for property in properties { print("Property '\(property.name)' changed to '\(property.newValue!)'"); } case .error(let error): print("An error occurred: (error)") case .deleted: print("The object was deleted.") } } // प्रभाव देखने के लिए dog का नाम अपडेट करें। try! realm.write { dog.name = "Wolfie" } ``` ### SwiftUI Realm सीधे SwiftUI के साथ एकीकृत होता है, आपके व्यू को अपडेट करता है ताकि आपको न करना पड़े। ```swift struct ContactsView: View { @ObservedResults(Person.self) var persons var body: some View { List { ForEach(persons) { person in Text(person.name) } .onMove(perform: $persons.move) .onDelete(perform: $persons.remove) }.navigationBarItems(trailing: Button("Add") { $persons.append(Person()) } ) } } ``` ## पूरी तरह एन्क्रिप्टेड डेटा को ट्रांज़िट में और आराम की स्थिति में एन्क्रिप्ट किया जा सकता है, जिससे सबसे संवेदनशील डेटा भी सुरक्षित रहता है। ```swift // एक यादृच्छिक एन्क्रिप्शन कुंजी उत्पन्न करें var key = Data(count: 64) _ = key.withUnsafeMutableBytes { (pointer: UnsafeMutableRawBufferPointer) in guard let baseAddress = pointer.baseAddress else { fatalError("Failed to obtain base address") } SecRandomCopyBytes(kSecRandomDefault, 64, baseAddress) } // कॉन्फ़िग में एन्क्रिप्शन कुंजी जोड़ें और realm खोलें let config = Realm.Configuration(encryptionKey: key) let realm = try Realm(configuration: config) // Realm का सामान्य रूप से उपयोग करें let dogs = realm.objects(Dog.self).filter("name contains 'Fido'") ``` ## आरंभ करना हम Swift Package Manager, CocoaPods, Carthage के माध्यम से या डायनामिक XCFramework आयात करके Realm स्थापित करने का समर्थन करते हैं। अधिक जानकारी के लिए, हमारा [Quick Start](docs/guides/quick-start.md) देखें। ## दस्तावेज़ीकरण दस्तावेज़ीकरण [docs/](docs/README.md) निर्देशिका में पाया जा सकता है। API संदर्भ को इस रिपॉजिटरी के रूट से `sh build.sh docs` चलाकर [jazzy](https://github.com/realm/jazzy/) का उपयोग करके स्रोत से उत्पन्न किया जा सकता है। ## सहायता प्राप्त करना - **अपने कोड में मदद चाहिए?**: Stack Overflow पर [`realm` टैग](https://stackoverflow.com/questions/tagged/realm?sort=newest) के साथ पिछले प्रश्न देखें या [नया प्रश्न पूछें](https://stackoverflow.com/questions/ask?tags=realm)। सामान्य चर्चा के लिए जो Stack Overflow के लिए बहुत व्यापक हो सकती है, [Community Forum](https://developer.mongodb.com/community/forums/tags/c/realm-sdks/58/swift/) का उपयोग करें। - **बग रिपोर्ट करना है?** [GitHub issue खोलें](https://github.com/realm/realm-swift/issues/new)। यदि संभव हो, तो Realm का संस्करण, पूरा लॉग, Realm फ़ाइल और एक प्रोजेक्ट शामिल करें जो समस्या दिखाता है। - **फीचर अनुरोध है?** [GitHub issue खोलें](https://github.com/realm/realm-swift/issues/new)। हमें बताएं कि फीचर को क्या करना चाहिए और आप फीचर क्यों चाहते हैं। ## Realm बनाना यदि आप पहले से संकलित संस्करण का उपयोग नहीं करना चाहते हैं, तो आप Realm को स्रोत से स्वयं बना सकते हैं। पूर्वापेक्षाएँ: * Realm बनाने के लिए Xcode 15.3 या नया आवश्यक है। * Realm दस्तावेज़ीकरण बनाने के लिए [jazzy](https://github.com/realm/jazzy) आवश्यक है। एक बार जब आपके पास सभी आवश्यक पूर्वापेक्षाएँ हों, तो Realm बनाना केवल एक कमांड लेता है: `sh build.sh build`। पहली बार Realm बनाते समय कोर बाइनरी डाउनलोड करने के लिए आपको इंटरनेट कनेक्शन की आवश्यकता होगी। यह `build/Release/` में Realm.xcframework और RealmSwift.xcframework उत्पन्न करेगा। सभी क्रियाओं को देखने के लिए `sh build.sh help` चलाएं (ios/osx बनाएं, दस्तावेज़ उत्पन्न करें, परीक्षण करें, आदि)। ## योगदान अधिक विवरण के लिए [CONTRIBUTING.md](CONTRIBUTING.md) देखें! ## आचार संहिता यह प्रोजेक्ट [MongoDB आचार संहिता](https://www.mongodb.com/community-code-of-conduct) का पालन करता है। भाग लेने से, आपसे इस संहिता को बनाए रखने की अपेक्षा की जाती है। कृपया अस्वीकार्य व्यवहार की रिपोर्ट [community-conduct@mongodb.com](mailto:community-conduct@mongodb.com) पर करें। ## लाइसेंस Realm Objective-C और Realm Swift Apache 2.0 लाइसेंस के तहत प्रकाशित हैं। Realm Core भी Apache 2.0 लाइसेंस के तहत प्रकाशित है और [यहां](https://github.com/realm/realm-core) उपलब्ध है। ## प्रतिक्रिया **_यदि आप Realm का उपयोग करते हैं और इससे खुश हैं, तो कृपया अपने विचार साझा करने के लिए [@realm](https://twitter.com/realm) का उल्लेख करते हुए एक ट्वीट भेजने पर विचार करें!_** **_और यदि आप इसे पसंद नहीं करते हैं, तो कृपया हमें बताएं कि आप क्या सुधार चाहते हैं, ताकि हम इसे ठीक कर सकें!_**