1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-realm

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

[!WARNING] Мы объявили о прекращении поддержки Atlas Device Sync + Realm SDKs в сентябре 2024 года. Для получения дополнительной информации, пожалуйста, посмотрите:

Для версии realm-swift без функций синхронизации, установите версию 2.0 или посмотрите ветку community.

realm by MongoDB

О Realm Database

Realm — это мобильная база данных, которая работает напрямую внутри телефонов, планшетов или носимых устройств. Этот репозиторий содержит исходный код для версий Realm Swift и Realm Objective-C для iOS, macOS, tvOS и watchOS.

Почему использовать Realm* Интуитивно понятна разработчикам: Объектно-ориентированная модель данных Realm проста в освоении, не требует ORM и позволяет писать меньше кода.

  • Создана для мобильных устройств: Realm полностью функциональна, легковесна и эффективно использует память, дисковое пространство и энергию батареи.
  • Создана для работы в оффлайн-режиме: Локальная база данных Realm сохраняет данные на диске, поэтому приложения работают так же хорошо в оффлайн-режиме, как и в онлайн-режиме.
  • MongoDB Atlas Device Sync: Сделает синхронизацию данных между пользователями, устройствами и вашим сервером в реальном времени простой. Начните бесплатно с шаблонного приложения и создайте облачную часть сервера.## Объектно-ориентированный подход: упрощение кода

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

// Получить Realm по умолчанию
let realm = try! Realm()
// Хранение данных легко с помощью транзакции записи
try! realm.write {
    realm.add(dog)
}

Live Objects: Построение реактивных приложений

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"
}

SwiftUI

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, используйте форум сообщества.
  • Найдено баг? Откройте issue на GitHub. Если возможно, приложите версию Realm, полный лог, файл Realm и проект, демонстрирующий проблему.
  • Хотите предложить новую функцию? Откройте issue на GitHub. Опишите, как должна работать функция и почему вам нужна эта функция.

Сборка Realm

Если вы не хотите использовать предварительно скомпилированную версию, вы можете собрать Realm самостоятельно из исходного кода.

Необходимые условия:

  • Сборка Realm требует Xcode 14.1 или более поздней версии.
  • Сборка документации Realm требует jazzy.

Как только у вас будут все необходимые условия, сборка 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-realm.git
git@api.gitlife.ru:oschina-mirror/mirrors-realm.git
oschina-mirror
mirrors-realm
mirrors-realm
master