[!WARNING] Мы объявили о прекращении поддержки Atlas Device Sync + Realm SDKs в сентябре 2024 года. Для получения дополнительной информации, пожалуйста, посмотрите:
Для версии
realm-swift
без функций синхронизации, установите версию 2.0 или посмотрите веткуcommunity
.
Realm — это мобильная база данных, которая работает напрямую внутри телефонов, планшетов или носимых устройств. Этот репозиторий содержит исходный код для версий Realm Swift и Realm Objective-C для iOS, macOS, tvOS и watchOS.
Realm был создан для мобильных разработчиков с упрощением в виду. Идиоматическая, объектно-ориентированная модель данных может сэкономить вам тысячи строк кода.
// Определите свои модели как обычные 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 = "Рекс"
dog.age = 1
print("имя собаки: \(dog.name)")
// Получить Realm по умолчанию
let realm = try! Realm()
// Хранение данных легко с помощью транзакции записи
try! realm.write {
realm.add(dog)
}
Live Objects Realm означают, что обновленные данные в любом месте автоматически обновляются везде.
// Открыть 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.name)' изменилось на '\(property.newValue!)'");
}
case .error(let error):
print("Произошла ошибка: \(error)")
case .deleted:
print("Объект был удален.")
}
}
```// Обновить имя собаки, чтобы увидеть эффект.
try! realm.write {
dog.name = "Wolfie"
}
Realm интегрируется напрямую с SwiftUI, обновляя ваши представления, чтобы вам не пришлось это делать.
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("Добавить") {
$persons.append(Person())
}
)
}
}
Данные могут быть зашифрованы в процессе передачи и на месте, обеспечивая безопасность даже самых чувствительных данных.
// Сгенерировать случайный ключ шифрования
var key = Data(count: 64)
_ = key.withUnsafeMutableBytes { (pointer: UnsafeMutableRawBufferPointer) in
guard let baseAddress = pointer.baseAddress else {
fatalError("Не удалось получить базовый адрес")
}
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'")
Мы поддерживаем установку Realm через Swift Package Manager, CocoaPods, Carthage или импортирование динамического XCFramework.
Для получения дополнительной информации см. подробные инструкции в наших [документах](https://www.mongodb.com/docs/atlas-device-sdks/sdk/swift/install/).
Если вас интересует бесплатное начало работы с шаблонным приложением, которое включает облачный сервер и синхронизацию, создайте учетную запись MongoDB Atlas.## Документация
Документация доступна по адресу mongodb.com/docs/atlas/device-sdks/sdk/swift/. Справочник по API расположен по адресу mongodb.com/docs/realm-sdks/swift/latest/
realm
на Stack Overflow или задайте новый вопрос. Для общего обсуждения, которое может считаться слишком обширным для Stack Overflow, используйте форум сообщества.Если вы не хотите использовать предварительно скомпилированную версию, вы можете собрать Realm самостоятельно из исходного кода.
Необходимые условия:
Как только у вас будут все необходимые условия, сборка Realm потребует всего одной команды: sh build.sh build
.
Первый раз вам потребуется подключение к интернету для загрузки ядра.
Это создаст Realm.xcframework и RealmSwift.xcframework в build/Release/
.Выполните sh build.sh help
, чтобы увидеть все действия, которые вы можете выполнить (сборка iOS/OSX, генерация документации, тестирование и т.д.).
См. CONTRIBUTING.md для получения дополнительной информации!
Этот проект следует коду поведения MongoDB. Участвуя в проекте, вы обязаны соблюдать этот код. Пожалуйста, сообщите о недопустимом поведении на community-conduct@mongodb.com.
Realm Objective-C и Realm Swift распространяются под лицензией Apache 2.0. Realm Core также распространяется под лицензией Apache 2.0 и доступен здесь.
Если вы используете Realm и довольны им, пожалуйста, расскажите об этом в твите, упомянув @realm!
Если вам что-то не нравится, пожалуйста, сообщите нам, что вы бы хотели улучшить, чтобы мы могли это исправить!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )