منصوبے کے بارے میں

# Realm ڈیٹا بیس کے بارے میں Realm ایک موبائل ڈیٹا بیس ہے جو براہ راست فونز، ٹیبلٹس یا پہننے کے قابل آلات کے اندر چلتا ہے۔ یہ ریپوزٹری Realm Swift اور Realm Objective-C کے iOS، macOS، tvOS اور watchOS ورژنز کے سورس کوڈ پر مشتمل ہے۔ ## 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 // کسی آبجیکٹ فیلڈ کو دوسری کلاس کی طرف اشارہ کرکے تعلقات بنائیں @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 میں ایک کتا بنائیں۔ 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.") } } // کتے کا نام اپڈیٹ کریں تاکہ اثر دیکھیں۔ 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 ریفرنس کو سورس سے [jazzy](https://github.com/realm/jazzy/) کا استعمال کرکے اس ریپوزٹری کی جڑ سے `sh build.sh docs` چلا کر تیار کیا جا سکتا ہے۔ ## مدد حاصل کرنا - **اپنے کوڈ میں مدد چاہیے؟**: 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 Code of Conduct](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) کا ذکر کرتے ہوئے ایک ٹویٹ بھیجنے پر غور کریں تاکہ اپنے خیالات شیئر کریں!_** **_اور اگر آپ اسے پسند نہیں کرتے، تو براہ کرم ہمیں بتائیں کہ آپ کیا بہتر کرنا چاہیں گے، تاکہ ہم اسے ٹھیک کر سکیں!_**