tokenpocket钱包官网安卓app下载|realm

作者: tokenpocket钱包官网安卓app下载
2024-03-07 20:50:10

REALM中文(简体)翻译:剑桥词典

REALM中文(简体)翻译:剑桥词典

词典

翻译

语法

同义词词典

+Plus

剑桥词典+Plus

Shop

剑桥词典+Plus

我的主页

+Plus 帮助

退出

剑桥词典+Plus

我的主页

+Plus 帮助

退出

登录

/

注册

中文 (简体)

查找

查找

英语-中文(简体)

realm 在英语-中文(简体)词典中的翻译

realmnoun [ C ] uk

Your browser doesn't support HTML5 audio

/relm/ us

Your browser doesn't support HTML5 audio

/relm/

realm noun [C]

(AREA)

Add to word list

Add to word list

C2 an area of interest or activity

(兴趣或活动的)界,领域,范围

Her interests are in the realm of practical politics.

她的兴趣在于实用政治。

realm noun [C]

(COUNTRY)

formal a country ruled by a king or queen

王国

the defence of the realm

保卫王国

The matter was hotly debated in all the towns of the realm.

此事在该王国内的各个城镇都进行了激烈的讨论。

习语

beyond/within the realms of possibility

(realm在剑桥英语-中文(简体)词典的翻译 © Cambridge University Press)

realm的例句

realm

As was discussed above, these realms are intricately tied to one another.

来自 Cambridge English Corpus

Belief in spiritual beings, forces and realms will, the prediction says, die out and with it religion itself.

来自 Cambridge English Corpus

The kind of certainty that we have in discourse regarding physical objects, in ethics, aesthetics, and religion characterizes the nature of these realms of discourse.

来自 Cambridge English Corpus

In computer music, all parties are always acutely aware of the presence and influence of machine technology in both the visual and audible realms.

来自 Cambridge English Corpus

The idiom is essentially pentatonic major, though with occasional and highly telling forays into the realms of rarefied chromaticism, and 'dissonance'.

来自 Cambridge English Corpus

However, it is obvious that as yet the concept has not been thoroughly investigated, nor has it penetrated all realms of activity.

来自 Cambridge English Corpus

They move into the more traditionally feminine realms of home and family.

来自 Cambridge English Corpus

The political reasons for supporting the emigration were not confined to the realms of slovanstvo.

来自 Cambridge English Corpus

示例中的观点不代表剑桥词典编辑、剑桥大学出版社和其许可证颁发者的观点。

C2

realm的翻译

中文(繁体)

範圍, (興趣或活動的)界,領域,範圍, 國家…

查看更多内容

西班牙语

reino, dominio, sector…

查看更多内容

葡萄牙语

reino, campo…

查看更多内容

更多语言

in Marathi

土耳其语

法语

in Dutch

in Tamil

in Hindi

in Gujarati

丹麦语

in Swedish

马来语

德语

挪威语

in Urdu

in Ukrainian

俄语

in Telugu

in Bengali

捷克语

印尼语

泰语

越南语

波兰语

प्रांत, क्षेत्र…

查看更多内容

alan, saha, ...dünyası…

查看更多内容

royaume, domaine…

查看更多内容

(konink)rijk, gebied…

查看更多内容

ஆர்வமுள்ள அல்லது செயல்பாட்டின் ஒரு பகுதி…

查看更多内容

(रुचि या गतिविधि का एक) क्षेत्र…

查看更多内容

અભિરુચિનું ક્ષેત્ર…

查看更多内容

kongerige, verden, -verden…

查看更多内容

rike, [sportens] värld…

查看更多内容

kerajaan, bidang…

查看更多内容

das Königreich, der Bereich…

查看更多内容

kongerike, (-)område…

查看更多内容

حلقہ, دائرہ, دنیا…

查看更多内容

королівство, галузь, сфера…

查看更多内容

область, сфера, королевство…

查看更多内容

ఆసక్తి ఉన్న, లేదా కార్యాచరణ రంగం…

查看更多内容

ক্ষেত্র…

查看更多内容

království, oblast…

查看更多内容

kerajaan, dunia…

查看更多内容

อาณาจักร, ขอบเขต…

查看更多内容

vương quốc, lĩnh vực…

查看更多内容

dziedzina, królestwo, domena…

查看更多内容

需要一个翻译器吗?

获得快速、免费的翻译!

翻译器工具

realm的发音是什么?

在英语词典中查看 realm 的释义

浏览

realize

realize assets phrase

reallocate

really

realm

Realpolitik

Realtor

realty

realty office

realm更多的中文(简体)翻译

全部

peer of the realm

beyond/within the realm of possibility, at beyond/within the realms of possibility idiom

查看全部意思»

惯用语

beyond/within the realm of possibility, at beyond/within the realms of possibility idiom

“每日一词”

veggie burger

UK

Your browser doesn't support HTML5 audio

/ˈvedʒ.i ˌbɜː.ɡər/

US

Your browser doesn't support HTML5 audio

/ˈvedʒ.i ˌbɝː.ɡɚ/

a type of food similar to a hamburger but made without meat, by pressing together small pieces of vegetables, seeds, etc. into a flat, round shape

关于这个

博客

Forget doing it or forget to do it? Avoiding common mistakes with verb patterns (2)

March 06, 2024

查看更多

新词

stochastic parrot

March 04, 2024

查看更多

已添加至 list

回到页面顶端

内容

英语-中文(简体)例句翻译

©剑桥大学出版社与评估2024

学习

学习

学习

新词

帮助

纸质书出版

Word of the Year 2021

Word of the Year 2022

Word of the Year 2023

开发

开发

开发

词典API

双击查看

搜索Widgets

执照数据

关于

关于

关于

无障碍阅读

剑桥英语教学

剑桥大学出版社与评估

授权管理

Cookies与隐私保护

语料库

使用条款

京ICP备14002226号-2

©剑桥大学出版社与评估2024

剑桥词典+Plus

我的主页

+Plus 帮助

退出

词典

定义

清晰解释自然的书面和口头英语

英语

学习词典

基础英式英语

基础美式英语

翻译

点击箭头改变翻译方向。

双语词典

英语-中文(简体)

Chinese (Simplified)–English

英语-中文(繁体)

Chinese (Traditional)–English

英语-荷兰语

荷兰语-英语

英语-法语

法语-英语

英语-德语

德语-英语

英语-印尼语

印尼语-英语

英语-意大利语

意大利语-英语

英语-日语

日语-英语

英语-挪威语

挪威语-英语

英语-波兰语

波兰语-英语

英语-葡萄牙语

葡萄牙语-英语

英语-西班牙语

西班牙语-英语

English–Swedish

Swedish–English

半双语词典

英语-阿拉伯语

英语-孟加拉语

英语-加泰罗尼亚语

英语-捷克语

英语-丹麦语

English–Gujarati

英语-印地语

英语-韩语

英语-马来语

英语-马拉地语

英语-俄语

English–Tamil

English–Telugu

英语-泰语

英语-土耳其语

英语-乌克兰语

English–Urdu

英语-越南语

翻译

语法

同义词词典

Pronunciation

剑桥词典+Plus

Shop

剑桥词典+Plus

我的主页

+Plus 帮助

退出

登录 /

注册

中文 (简体)  

Change

English (UK)

English (US)

Español

Русский

Português

Deutsch

Français

Italiano

中文 (简体)

正體中文 (繁體)

Polski

한국어

Türkçe

日本語

Tiếng Việt

हिंदी

தமிழ்

తెలుగు

关注我们

选择一本词典

最近的词和建议

定义

清晰解释自然的书面和口头英语

英语

学习词典

基础英式英语

基础美式英语

语法与同义词词典

对自然书面和口头英语用法的解释

英语语法

同义词词典

Pronunciation

British and American pronunciations with audio

English Pronunciation

翻译

点击箭头改变翻译方向。

双语词典

英语-中文(简体)

Chinese (Simplified)–English

英语-中文(繁体)

Chinese (Traditional)–English

英语-荷兰语

荷兰语-英语

英语-法语

法语-英语

英语-德语

德语-英语

英语-印尼语

印尼语-英语

英语-意大利语

意大利语-英语

英语-日语

日语-英语

英语-挪威语

挪威语-英语

英语-波兰语

波兰语-英语

英语-葡萄牙语

葡萄牙语-英语

英语-西班牙语

西班牙语-英语

English–Swedish

Swedish–English

半双语词典

英语-阿拉伯语

英语-孟加拉语

英语-加泰罗尼亚语

英语-捷克语

英语-丹麦语

English–Gujarati

英语-印地语

英语-韩语

英语-马来语

英语-马拉地语

英语-俄语

English–Tamil

English–Telugu

英语-泰语

英语-土耳其语

英语-乌克兰语

English–Urdu

英语-越南语

词典+Plus

词汇表

选择语言

中文 (简体)  

English (UK)

English (US)

Español

Русский

Português

Deutsch

Français

Italiano

正體中文 (繁體)

Polski

한국어

Türkçe

日本語

Tiếng Việt

हिंदी

தமிழ்

తెలుగు

内容

英语-中文(简体) 

 

Noun 

realm (AREA)

realm (COUNTRY)

例句

Translations

语法

所有翻译

我的词汇表

把realm添加到下面的一个词汇表中,或者创建一个新词汇表。

更多词汇表

前往词汇表

对该例句有想法吗?

例句中的单词与输入词条不匹配。

该例句含有令人反感的内容。

取消

提交

例句中的单词与输入词条不匹配。

该例句含有令人反感的内容。

取消

提交

Realm Home | Realm.io

m Home | Realm.io LearnRealm Tutorial Database for Mobile Apps Realm vs SQLite iOS Databases Android Databases Build an Android App CommunityForums Events & Meetups Community Projects Blog Newsletter Twitter Github Medium Submit Feedback ProductsRealm Swift Realm Java Realm Kotlin Realm React Native Realm Node.js Realm .NET Realm Flutter Device Sync Sync Pricing Release Notes DocsRealm SDKs Device Sync Realm Studio Get StartedInstall Realm Deploy Device Sync Follow Tutorial GitHub Deploy a sample appBuild better apps, faster.Realm is a fast, scalable alternative to SQLite with mobile to cloud data sync that makes building real-time, reactive mobile apps easy.Deploy a sample appView documentation Why Use Realm?Fast and lightweight and the bestBuild data rich apps without draining device resources with Realm's lazy loading and zero-copy architecture.Simple to start and scaleThe object-oriented data model lets developers work directly with native objects – no ORMs or DAOs needed.Built-in mobile to cloud syncReal-time mobile to cloud data sync makes it easy to build interactive features that keep data up-to-date across multiple devices, users, and the backend.Launch faster with intuitive APIsAccelerate time-to-market with easy to learn, language-native APIs that simplify data access.KotlinSwiftJavaScriptC#// Your object classes are your database schema definition

class Dog: RealmObject {

var name: String = "",

var age: Int = 0

}

class Person: RealmObject {

@PrimaryKey var _id: String = "",

var name: String = "",

var age: Int = 0,

// Create relationships by pointing an Object field to another Class

var dogs: RealmList = realmListOf()

}

// Use Realm objects like regular Kotlin objects

val dog = Dog().apply {

name = "Rex"

age = 1

}

// Open a Realm reference

val config = RealmConfiguration.with(schema = setOf(Person::class, Dog::class))

val realm = Realm.open(config)

// Add the dog to the realm

realm.write {

copyToRealm(dog)

}

Build full mobile apps with easeDevice Sync, backed by MongoDB Atlas, handles the most complex part of connecting your client to the backend with ease – guaranteeing an app that works as expected and syncs data reliably, every time.KotlinSwiftJavaScriptC#class Dog: RealmObject {

@PrimaryKey var _id: String = “�

var name = “�

var age = 0

}

suspend fun example() {

val app = App(“Your app Id�)

// MongoDB Realm offers built-in Auth to secure Syncing data

val user = app.login(Credentials.anonymous())

// Data can be Synced with a simple configuration

val config = SyncConfiguration.with(app.currentUser(), "myPartition", setOf(Person::class, Dog::class))

val realm = Realm.getInstance(config)

}

Apps built with Realm Fork 0 Star 0Thousands of apps are built on Realm — from hyper-growth startups to Fortune 500 companies.View Community Projects Upcoming events & meetupsJoin us for regular meetups and find out where our Engineers and Advocates are speaking at key events.Missed a Realm event or meetup? Head over to our Youtube channel to catch up on the meetups and livestreams with our Realm team and community members.View full calendar Watch videos Getting startedLearning from scratchSee Realm in action in this task tracker tutorial where you’ll learn how to make a collaborative task tracker app using Realm and Device Sync.Read tutorial Advanced Realm guidesIf you’re already familiar with Realm, read our documentation to increase your skills.View docs Configuring Device SyncView our guides and documentation to learn how to enable Device Sync for your Realm app.Learn about Device Sync Github reposCheck out readmes and sample repos or start a feature discussion on Github.View repos Recent articlesSaving Data in Unity3D Using SQLiteby Dominic FreiPersisting data is an important part of most games. Unity offers only a limited set of solutions, which means we have to look around for other options as well. In this tutorial series, we will explore the options given to us by Unity and third-party libraries.Read blog post From Zero to Mobile Developer in 40 Minutesby Andrew MorganVideo showing how to build your first iOS app using SwiftUI and RealmRead blog post Migrating Android Apps from Realm Java SDK to Kotlin SDKby Jorge D. Ortiz-Fuentes, Mohit SharmaThis is a guide to help you migrate you apps that are using the Realm Java SDK to the newer Realm Kotlin SDK. It covers the most important changes that you need to put in place to use the Kotlin SDK.Read blog post Frequently asked questionsWhat is Realm?Realm is an object-oriented mobile database built to make storing, querying, and syncing data simple. No ORMs or DAOs required.Is Realm just a wrapper on top of SQLite?No, Realm is built from the ground up as a modern, performant alternative to SQLite.Is Realm ACID-compliant?Yes, Realm is ACID-compliant.What languages and frameworks does Realm support?Realm supports a variety of languages including Swift, Objective-C, Kotlin, Java, JavaScript, React Native, Xamarin, C#, Dart, Flutter, .NET for C#, and Unity.What is MongoDB’s relationship with Realm?MongoDB acquired Realm in 2019 and has since released Device Sync – a mobile to cloud synchronization solution that syncs data from Realm to MongoDB’s fully managed cloud offering, Atlas.

MongoDB is committed to keeping the Realm database open source and free to use.Deploy Realm in minutesDeploy an iOS, Android, or cross-platform “To Do� app with real-time sync in minutes.Get started nowLearnRealm TutorialDatabase for Mobile AppsRealm vs SQLiteiOS DatabasesAndroid DatabasesBuild an Android AppCommunityForumsEvents & MeetupsCommunity ProjectsBlogNewsletterTwitterGithubMediumSubmit FeedbackProductsRealm SwiftRealm JavaRealm KotlinRealm React NativeRealm Node.jsRealm .NETRealm FlutterDevice SyncSync PricingRelease NotesDocsRealm SDKsDevice SyncRealm StudioGet StartedInstall RealmDeploy Device SyncFollow TutorialGitHubStay updatedRealm’s newsletter keeps you up to date on product announcements, best practices, community events, and more.Subscribe© 2024 RealmSupportCareersLegalPrivacyCode of Cond

realm是什么意思_realm的翻译_音标_读音_用法_例句_爱词霸在线词典

m是什么意思_realm的翻译_音标_读音_用法_例句_爱词霸在线词典首页翻译背单词写作校对词霸下载用户反馈专栏平台登录realm是什么意思_realm用英语怎么说_realm的翻译_realm翻译成_realm的中文意思_realm怎么读,realm的读音,realm的用法,realm的例句翻译人工翻译试试人工翻译翻译全文简明柯林斯牛津realmCET4/CET6/考研/GRE/TOEFL/IELTS英 [relm]美 [relm]释义n.领域,范围; 王国; (学术的)部门,界; (动植物分布的)圈,带大小写变形:REALM点击 人工翻译,了解更多 人工释义词态变化复数: realms;实用场景例句全部领域范围王国部门in the realm of literature在文学领域内牛津词典At the end of the speech he seemed to be moving into the realms of fantasy.讲话的最后,他似乎进入了虚幻的境地。牛津词典the defence of the realm王国的防卫牛津词典A successful outcome is not beyond the realms of possibility.最后取得成功并非没有可能。牛津词典...the realm of politics...政治领域柯林斯高阶英语词典Students' interests are mostly limited to the academic realm.学生们的兴趣大多限于学术领域。柯林斯高阶英语词典Defence of the realm is crucial.王国的国防至关重要。柯林斯高阶英语词典A fall of 50 per cent or more on prices is not beyond the realms of possibility...降价50%或更多并非不可能。柯林斯高阶英语词典This is a target which is surely within the realm of possibility.这是一个完全有可能实现的目标。柯林斯高阶英语词典Create the limitless realm on the limited space.在有限的空间创造无限的境界.期刊摘选Does providing my realm preference guarantee my destination?我选择了新的服务器后,保证就能转到那个新的去?期刊摘选Among breeding birds, thethe Palaearctic species and Oriental species, which shows more characseristics of Oriental realm.在繁殖鸟中古北界种类与东洋界种类之比为1:3.87,偏重于东洋界.期刊摘选Reality sickens them, they long for a realm of unlimited opportunity.现实使他们头痛, 他们向往一种无限希望的境界.期刊摘选In the realm of totalitarian kitsch , all answers are given in advance and preclude any questions.在极权主义的庸俗作品里, 所有的答案都提前给出并产生了新的问题.期刊摘选But there is still another realm of disagreement which stems from something rather different.但仍然有源于相当不同事分歧的其它领土.期刊摘选These are the disillusionment of human nature and the aesthetic life realm.这是一种人性的觉醒,一种审美的人生境界.期刊摘选Reading Meaningful Commodities immortal works, through the master strokes, the realm of aesthetic experience.品读隽永不朽的作品, 透过名家笔触, 感受唯美的境界.期刊摘选Challenges not experienced a new realm.挑战未经历过的新境界.期刊摘选The king maintained order within the bounds of his realm.国王在其王国的疆界之内维持着秩序.《简明英汉词典》Learn to enjoy solitude, life will enter another realm.学会享受孤独, 生命会进入另外一个境界.期刊摘选Except in the realm of material invention, nothing new under the sun.除了物质领域的发明之外, 天下没有任何新东西.期刊摘选The avian fauna are composed of 68 Palaearctic realm species ( 41.21 % ), 90 Oriental realm species ( 54.54 % ) and 7 Eurytopic species ( 4.24 % ).从地理型分析,东洋界种有90种 ( 54.54% ),古北界种68种 ( 41.21% ), 广布种7种 ( 42.24% ).期刊摘选This is not narcissism, but an otherworldly realm of life.这不是自我陶醉, 而是一种超凡脱俗的人生境界.期刊摘选No one actually knows what's down in Lucifer's realm, or even if Lucifer exists anymore.实际上下面露西法的王国到底是怎样的, 抑或哪怕是露西法还在不在那儿都根本无人知晓.期刊摘选Poetic flavor appears in the realm of painting as a common word.在绘画领域,诗意作为一个习常的用语出现.期刊摘选With the development of social practice, word is applied in management realm beyond military.随着社会实践发展, 战略一词运用到军事以外的管理领域.期刊摘选The second is an opposite more arisen realm, I believe and would have vast development space.第二,作为一门相对较新兴的领域, 我相信会有广阔的发展空间.期刊摘选It provides an experience of the uppermost and supreme spiritual realm in Taoism.“游”的过程是体道的过程,亦是审美的过程.期刊摘选收起实用场景例句真题例句全部四级六级考研The white clothing conveyed an image of cleanliness, according to Careme—and in his realm, appearance was everything.2018年12月四级真题(第二套)阅读 Section BSo you can see how being good in the interpersonal realm actually was a direct benefit, even for effectively pursuing a technical task.出自-2013年6月听力原文But snap decisions in reaction to rapid stimuli aren't exclusive to the interpersonal realm.2013年考研真题(英语二)阅读理解 Section Ⅱ收起真题例句英英释义Noun1. a domain in which something is dominant;"the untroubled kingdom of reason""a land of make-believe""the rise of the realm of cotton in the south"2. a knowledge domain that you are interested in or are communicating about;"it was a limited domain of discourse""here we enter the region of opinion""the realm of the occult"3. the domain ruled by a king or queen收起英英释义同义词n.领域;地区domainprovincerangespherefieldregionextent其他释义provinceempirefieldextentelementuniverserangekingdomsphereregionhabitatcompasscommonwealthdomaincircledepartment行业词典体育领域   范围   领土   动物学[动物地理]界   法律王国   释义词态变化实用场景例句真题例句英英释义同义词行

Realm - 建立社区、游戏和博客

m - 建立社区、游戏和博客主页文档动态关于登录加入 Realm在 Realm 中创建 时刻在线的应用 如果你想搭建一个支持多人在线的网站、应用、互动故事或者社区,却被复杂的网络编程技术和运维细节所困扰,那么 Realm 就是为你准备的。无论是否初次接触编程,通过学习关于图形化编程和 JavaScript 的简单概念,都可以将你的想法变为现实。阅读开发文档作为用户登录在领域中你可以创建社区搭建应用互动故事同人二创多人游戏博客开箱即用的在线应用和文字游戏无需进行复杂的环境配置和服务器部署,只需要一个浏览器,使用在线编辑器进行开发。保存后,立刻生效。搭建应用创建高度灵活、天然在线的应用程序创建支持灵活布局和多种功能的应用,例如待办事项、聊天室、卡牌游戏!天然在线的特性使你无需考虑服务器、网络通讯和应用分发,就可以实现始终在线且联机的应用。文字游戏创建无限分支剧情的文字游戏你可以添加 NPC,实现无限分支剧情、多人在线的文字游戏。你甚至可以用它来编写 2D 平面游戏。可视化开发简单的拖动元素即可开发你可以通过拖动元素来创建应用,在应用中添加按钮、文本框、图片等元素,并且自适应手机、平板和电脑。搭建应用创建高度灵活、天然在线的应用程序创建支持灵活布局和多种功能的应用,例如待办事项、聊天室、卡牌游戏!天然在线的特性使你无需考虑服务器、网络通讯和应用分发,就可以实现始终在线且联机的应用。文字游戏创建无限分支剧情的文字游戏你可以添加 NPC,实现无限分支剧情、多人在线的文字游戏。你甚至可以用它来编写 2D 平面游戏。可视化开发简单的拖动元素即可开发你可以通过拖动元素来创建应用,在应用中添加按钮、文本框、图片等元素,并且自适应手机、平板和电脑。常见问题打算开始你的计划?在这里你可以找到一些常见问题的答案。我需要有哪些基础才能创建一个领域?你不需要任何基础就可以开始!Realm 提供不同灵活性和难度的工具,从博客、文字游戏到应用,都可以在一个领域完成。要开发一个应用,我需要哪些知识?如果你需要开发一个应用,你需要掌握如何使用 Realm 的可视化开发工具,此外,还需要学习一些基础的 JavaScript 知识。不要担心,教程会帮助你快速上手。如果有问题,可以联系我们的客服。在开发应用时,我要安装哪些软件?你只需要一个浏览器就可以了,Realm 的开发工具是基于浏览器的。你可以在任何设备上开发应用,包括手机。我可以在领域中做什么?你可以在领域中创建社区、互动故事、多人游戏、博客、应用等等。我可以创建多少个领域?你可以创建无限个领域,每个领域就像网站一样,拥有独立的数据库,会独立存储用户数据。一个领域可以支持多少在线用户?Realm 采用高并发技术,理论上没有在线人数的上限。我想实现一个XXX,我应该怎么做?你可以在教程中找到一点思路,如果依然没有头绪,可以联系我们的客服,我们会为你提供帮助。我遇到问题了,如何获得帮助?你可以在这里寻求帮助,Realm 有专门的人员为你解答问题。主页文档动态关于网站地图动态© 2022 - 2024 Realm粤ICP备19101180

聊聊移动端跨平台数据库 Realm - 知乎

聊聊移动端跨平台数据库 Realm - 知乎首发于杏仁技术站切换模式写文章登录/注册聊聊移动端跨平台数据库 Realm张琼芳iOSer, 后台工程师,铲屎官作者 | 钱凯杏仁移动开发工程师,前嵌入式工程师,关注大前端技术新潮流。开发杏仁 App 的过程中,我们在相对独立的模块试水了当前非常流行的移动端数据库:Realm,有挑战也有惊喜。下面以 iOS(Object-C) 平台为例,简单介绍下 Realm 的基本使用,并且总结下心得。什么是RealmRealm 是一个针对移动端开发的、跨平台、跨语言数据存储方案。它上手方便,性能强大,功能丰富而且还在不断更新。Realm 在语言上支持 Java 、 JS 、 .NET、 Swift 、 OC,基本覆盖了当前移动端的所有场景。目前,Realm 已经完全开源,并且有很多三方的插件可以使用,生态已经相对比较成熟了。配置Realm 的配置比较简单,升级和数据迁移都很直观,不过需要注意:每次对数据库表有更新都必须手动增加版本号,不然会闪退。升级表(增加、删除字段或表)不需要手写迁移代码;如果有数据迁移、修改字段名、合并字段、数据升级等高级操作,则在 block 中写相关代码,具体可参照文档。一般来说要写全递归升级的所有版本分支,做好每个版本的清理工作,以免发生意外(比如版本2比版本1删除了字段A,版本3又添加回来,用户如果直接从版本1升级到版本3,则会有脏数据)。启动Realm的基本流程: // 1.配置数据库文件地址

NSString *filePath = path;

RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];

config.fileURL = [[[NSURL URLWithString:filePath] URLByAppendingPathComponent:@"YF"] URLByAppendingPathExtension:@"realm"];

// 2. 加密

config.encryptionKey = [self getKey];

// 3. 设置版本号(每次发布都应该增加版本号)

config.schemaVersion = 1;

// 4. 数据迁移

config.migrationBlock = ^(RLMMigration *migration, uint64_t oldSchemaVersion) {

if (oldSchemaVersion < 1) {

// do something

}

};

// 5. 设置配置选项

[RLMRealmConfiguration setDefaultConfiguration:config];

// 6. 启动数据库,完成相关的配置

[RLMRealm defaultRealm];建表直接继承 RLMObject 的类将会自动创建一张表,表项为这个类的属性。需要注意几点:Number,BOOL 等类型要用 Realm 指定的格式。Array 要用 RLMArray 容器,来表示一对多的关系。没有入库前,可以像正常 Object 一样操作;但是入库后或者是 query 出来的对象,则要按照 Realm 的规范处理。这点是刚上手时需要特别注意的。一个典型的 Realm 对象:@interface YFRecommendHistoryObject : RLMObject

@property (nonatomic) NSNumber *recommendId;

@property (nonatomic) NSNumber *patientId;

@property (nonatomic) NSString *patientName;

@property (nonatomic) NSNumber *created;

@property (nonatomic) NSString *createdTimeString; // yyyy-MM-dd hh:mm

@property (nonatomic) NSNumber *count;

@property (nonatomic) NSNumber *totalPrice; ///< 总价,分

@property (nonatomic) NSString *totalPriceString; /// ¥xxxx.xx

@property (nonatomic) RLMArray *items;

@end 所有被 Realm 管理的对象都是线程不安全的,绝对不可以跨线程访问对象,也不要将 Realm 对象作为参数传递。推荐的做法是每个线程甚至是每次需要访问对象的时候都重新 query。PS:最新版本的 Realm 提供了一些跨线程传递对象的途径(RLMThreadSafeReference)。增删查改入库:// 创建对象

Person *author = [[Person alloc] init];

author.name = @"David Foster Wallace";

// 获取到Realm对象

RLMRealm *realm = [RLMRealm defaultRealm];

// 入库

[realm beginWriteTransaction];

[realm addObject:author];

[realm commitWriteTransaction];另外对一对一关系或者一对多关系的赋值也相当于入库。对被管理对象的所有赋值,删除等操作都必须放到 begin-end 对当中,否则就是非法操作,直接闪退。// 删除对象

[realm beginWriteTransaction];

[realm deleteObject:cheeseBook];

[realm commitWriteTransaction];需要注意的是如果一个对象从数据库中被删除了,那么它就是非法对象了,对其的任何访问都会导致异常。查询的话语法和 NSPredicate类似。// 使用 query string 来查询

RLMResults *tanDogs = [Dog objectsWhere:@"color = 'tan' AND name BEGINSWITH 'B'"];

// 使用 Cocoa 的 NSPredicate 对象来查询

NSPredicate *pred = [NSPredicate predicateWithFormat:@"color = %@ AND name BEGINSWITH %@",

@"tan", @"B"];

tanDogs = [Dog objectsWithPredicate:pred];通知不要手动去管理数据库对象更新的通知,Realm 会自动在 Runloop 中同步各个线程的数据,但是同步的时机是无法预料的,应该使用 Realm 框架自带的通知系统。 对集合对象的通知:self.notificationToken = [[Person objectsWhere:@"age > 5"] addNotificationBlock:^(RLMResults *results, RLMCollectionChange *changes, NSError *error) {

if (error) {

NSLog(@"Failed to open Realm on background worker: %@", error);

return;

}

UITableView *tableView = weakSelf.tableView;

// 在回调中更新相关UI

[tableView beginUpdates];

[tableView deleteRowsAtIndexPaths:[changes deletionsInSection:0]

withRowAnimation:UITableViewRowAnimationAutomatic];

[tableView insertRowsAtIndexPaths:[changes insertionsInSection:0]

withRowAnimation:UITableViewRowAnimationAutomatic];

[tableView reloadRowsAtIndexPaths:[changes modificationsInSection:0]

withRowAnimation:UITableViewRowAnimationAutomatic];

[tableView endUpdates];

}];Realm 在 OC 中实现响应式主要靠这种方式。在其它语言平台上(JS,JAVA,Swift),Realm 对响应式编程的支持要更好一些。对普通 object 的通知:RLMStepCounter *counter = [[RLMStepCounter alloc] init];

counter.steps = 0;

RLMRealm *realm = [RLMRealm defaultRealm];

[realm beginWriteTransaction];

[realm addObject:counter];

[realm commitWriteTransaction];

__block RLMNotificationToken *token = [counter addNotificationBlock:^(BOOL deleted,

NSArray *changes,

NSError *error) {

if (deleted) {

NSLog(@"The object was deleted.");

} else if (error) {

NSLog(@"An error occurred: %@", error);

} else {

for (RLMPropertyChange *property in changes) {

if ([property.name isEqualToString:@"steps"] && [property.value integerValue] > 1000) {

NSLog(@"Congratulations, you've exceeded 1000 steps.");

[token stop];

token = nil;

}

}

}

}];关于通知的使用,有两点需要注意:必须保持对 token 的引用,token 被释放,则通知失效(在被释放前最好按规范 stop 掉 token)。object 通知并不监听得到 object 的 RLMArray 等集合属性成员的变化,需要另外处理。一些总结Realm 真的好用吗?相对于陈旧的 sqlite 和学习曲线陡峭的 CoreData,Realm 还是一个不错的选择。但是就目前的版本来说,还存在一些局限性。先说说优点:简单:光速上手(然后光速踩坑,APP 狂闪不止)。这个确实是小团队福音,不需要学习曲线陡峭的 CoreData,甚至不用写 sql,大家简单阅读下文档,就可以在实际项目中开用了。升级、迁移等都有非常成熟的接口。性能优秀:简单看过原理,相比于传统数据库链接 - 查询 - 命中 - 内存拷贝 - 对象序列化的复杂过程,Realm 采用基于内存映射的 Zero-Copy 技术,速度快一个数量级。而且内部采用了类似 git 的对象版本管理机制,并发的性能和安全性也不错。线程安全:Realm 拒绝跨线程访问对象,同时,在不同线程中进行增删查改都是绝对安全的。安全的代价是代码上的不便,下面会讲。跨平台:iOS 和安卓两边可以共用一套存储方案,Realm 数据库则方便地在不同平台中进行迁移。对于 RN 开发来说,Realm更是数据库方案的首选,真正做到 write once run everywhere。响应式:Realm 的查询结果是随数据库变化实时更新的(要求对象在 Run Loop 线程中),配合KVO或者Realm 自带的 ObjectNotification,可以轻松构建即时反映数据变化的响应式 UI,这点和目前主流的响应式框架(ReactNative,ReactiveCocoa)应该是天作之和了。但是要求使用者改变思路,不然会出现很多诡异的 bug。ORM:虽然 Realm 自己号称是『为移动开发者定制的全功能数据库』,但是其中确实包含 ORM 的很多特性,不用手动写中间层了,取出来就是新鲜活泼的对象,everyone is happy。再说说坑:无法多线程共享数据库对象:这是 Realm 设计的要求,跨线程访问的话,只能自己重新 query 出来。前面说的上手快,踩坑也快,就是因为这个:异步的 Block、网络接口的回调、从不同线程发出的通知都会触发这个访问异常。ORM 出来的是对象最关键的还是思维方式的转换,虽然是 ORM,但毕竟还是是个数据库,该 query 的地方,还是不要偷懒。数据库对象管理:这里有很多坑,比如访问一个被删除的对象时,会直接异常;数据库被 close 后,所有查询出的 object 都无法使用;修改被管理对象属性,必须在指定 block 或者数据库事物集中完成,相当于入库。而 Realm 对象和普通对象是没有任何区别的,所以使用 Realm 的一个重要原则是:不要将数据库对象作为参数传递。对代码的侵蚀严重:所有的的数据库对象要继承指定的类(没法继承自己的基类了),增删改查,对查询结果处理都有特殊的语法要求,这使得在旧项目中引入 Realm 或者放弃使用将 Realm 从项目中剥离都面临很大的成本。静态库大、版本尚未稳定:引入这样一个三方静态库会增加 App 体积,目测大了 1M 至少了。另外 Realm 目前还不是很稳定,之前测试新出的 ObjectNotification 功能,居然会出现偶尔拿不到回调的 bug,相比于成熟的 sqlite 方案,还不是很放心。以上介绍了下 Realm Database 的基本情况,主要场景是移动端的本地存储。其实 Realm 还有提供 Realm Platform 产品,提供移动响应式后台解决方案,有兴趣的团队可以了解下。总而言之,Realm 还是一个值得尝试的存储方案。如果你追求快速部署、优秀前卫的特性、以及跨平台,Realm 是你的首选;如果你追求稳定,而已有的项目庞大成熟,可以选择暂时观望技术的新进展,谨慎选择。全文完我们正在招聘 Java 工程师,欢迎有兴趣的同学投递简历到 rd-hr@xingren.com 。欢迎搜索关注微信公众号:杏仁技术站(微信号 xingren-tech)。发布于 2017-12-19 14:43移动开发Realm​赞同 6​​1 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录杏仁技术站我们是杏仁医生的技术团队,我们用技术改变世界。在这里,我们会分享工作和学习中的点点滴滴,包括前端、后端、运维、产品等各个方面,欢迎大家一起来

Realm 是为移动端开发而设计的新型数据库

Realm 是为移动端开发而设计的新型数据库

Success!

Menu

产品

Platform

Database

Developers

Forums

Academy

文档

Platform

Database

价格

Support

Company

Blog

报道我们

工作机会

关于

日本語

中文

한국어

English

main navigation

< 产品

Platform

Database

Realm Studio

价格

文档

Database

Java

Objective‑C

JavaScript

Swift

.NET

Support

Overview

Forums

Language

日本語

中文

한국어

English

Blog

Academy

Free Trial

Build better apps faster with edge-to-cloud sync - Free Trial

Menu

产品

Platform

Database

Developers

Forums

Academy

文档

Platform

Database

价格

Support

Company

Blog

报道我们

工作机会

关于

日本語

中文

한국어

English

Free Trial

main navigation

产品

Platform

Database

Realm Studio

价格

文档

Database

Java

Objective‑C

JavaScript

Swift

.NET

Support

Overview

Forums

Language

日本語

中文

한국어

English

Blog

Academy

Free Trial

Realm 是为移动端开发而设计的新型数据库

by

Marin Todorov

Dec 13 2016

Return to Academy

Article

About the Speaker

这是 Realm 移动数据库的系类文章的第一部分;它强调了 Realm 数据引擎的优点和开发者可以使用的原生类。

Realm 移动数据库是一种新型的移动数据库,它是全新的,从零开始研发的,它能使得当今的移动开发如虎添翼。

常常会有这样的误解,Realm 是构建在一个现有的技术上的,或者是另外一个库的重写。毕竟,不像服务器端的数据库,客户端没有多少创新。

在这篇文章中,我们将看看 Realm 和其他技术与众不同的地方。如果你听说过 Realm,但是又不很了解它特别的地方,这篇博客就非常适合你。

看看这些公司还有成千上万的企业都信任 Realm 来支持它们的应用的原因,它们的应用都有超过 10 亿用户了。

数据层库和 ORMs

被你称作 “数据库程序库” 的东西指的是 — 使用某种存储引擎的第三方程序库,它可以提供一个 现代/功能性/多样的 (选你喜欢的) 方式来访问你的数据层。

你可以使用 Swift 或者 Java 库来访问你的 SQLite 存储,采用一种更为现代的方式,比如 generics 和 structs。但是存储引擎仍然使用 SQLite 来完成所有的磁盘读写操作。

而且,你使用的第三方库仍然需要把你的本地数据结构转换成某种数据格式,执行背后的 SQL 查询,然后把你的数据转换成 SQL 表的一行。

如果你使用一个成熟的 ORM,你几乎总是需要大量的后台运行操作。一个 ORM 会持续地把你的对象转换成中间格式,然后运行 SQL 语句来和 SQLite 文件打交道。任何时候你访问一个和你正在工作的对象相关的对象,ORM 会把它转换成一个 JOIN SQL 查询,在一个查询表上执行它,然后在另外一个表上找到对应的记录,那个表存储着相关的对象。

Receive news and updates from Realm straight to your inbox

订阅

Comments

简单的数据访问都会隐藏着大量的工作。它不仅仅消耗了 CPU 和磁盘时间,也会 急剧 变慢。这意味着你不得不把这些工作放到主线程之外完成,而且引入合适的线程技术,现在你的代码变得非常复杂了,仅仅只是为了得到数据。

Realm 不是重复现在的技术

看看现在的解决方案和上面提到的缺点, Realm 小组决定自己实现,构建性能优越的 存储引擎。

Realm 移动数据库因此 和 SQLite 没有任何关系 也不是另外一个 SQL 数据库;它的目标就是去解决这些领域里面的已知问题。但是 Realm 移动数据库也 不是一个键-值存储 类型,这种存储类型在某些情况下非常棒,但是开发者真的很想直接和本地对象打交道。

最后,Realm 移动数据库 也不是一个 ORM。ORM 把 SQL 数据库的表结构中平的数据转换成了对象图,这样它们能被本地代码使用了。 Realm 的客制化存储引擎不需要把数据转换成对象图,所以它不需要 ORM。

Realm 数据库 直接存储对象 在磁盘上,当然需要最少的类型和结构的转换。英文它没有映射关系或者其它动态解读实体,Realm 移动数据库能够从内存到磁盘非常迅速地操作对象。

事实上,这是 Realm 移动数据库的一个标志性特性:你可以在主线程里面读写!你不用担心这会阻塞你的 UI。(这背后是有原因的,我们不是魔术师。 )

Realm 的核心是用非常快的 C++ 写的,它把 C++ 对象映射到磁盘上。因为它是和 SDK 一起开发的,它的 API 和行为和移动应用使用数据的方式高度耦合,这样你可以很容易理解它的工作方式。

这种高度联系的方式让人想起 iOS:苹果制造 iPhone 硬件,然后给开发者提供最好的 SDK 来最大程度使用硬件。这就是为什么在一个很长的联系人列表上滑动的时候永远都不会掉帧,即使硬件不如其他设备性能强劲的情况下也是如此。

更进一步,通过一个坚实的,可兼容的,多平台的 C++ 内核, Realm 有着在任何地方都运行很好的潜力,它不会限制在某一个平台或者供应商上。

你可能会开始担心这篇演讲会是关于 C++ 的,你也许会问 “那么,使用 Realm 我需要了解 C++ 吗?” 谢天谢地,你不需要,这是因为……

一个坚实的核心使用你的语言

Realm 移动数据库支持 5 种 SDK,API 层非常轻量,这使得你可以用任何移动编程语言来使用核心 API。

每一个 SDK 被设计成能使用开发者熟悉的语言和平台特性。让我们看看那基本的 Realm Swift 和 Realm Java。

我们从 Realm Swift 开始,你可能会定义一个对象:

class Repository: Object {

dynamic var id: Int = 0

dynamic var stars: Int = 0

dynamic var url: String = ""

dynamic var name: String?

dynamic var favorite: Favorite?

}

然后查询一些对象:

let repos = realm.objects(Repository.self)

.filter("name contains[c] %@", searchTerm)

这些代码使用了 Swift 的 generics 来泛型结果集,而且它使用了苹果的 NSPredicate 来允许你能使用你熟悉的语法来查询。一个函数式的方法链条在 Swift 编程者中间是非常流行的。使用诸如 map, filter 和 sort 的方法在独立的集合类型上,所以 Realm 的集合类型也提供了类似的 API。

现在让我们看看 Realm Java 里面的同样的概念。你可以在 Java 里面定义同样的对象:

public class Repository extends RealmObject {

@PrimaryKey

private Int id;

private Int stars;

public Int getId() { return id; }

public void setId(Int id) { this.id = id; }

public Int getStars() { return stars; }

public void setStars(Int id) { this.stars = stars; }

//etc.

}

现在你可以在安卓上查询这些 Repository 对象:

RealmResults results = realm.where(Repository.class)

.contains("name", searchTerm).findAll();

这段 Java 代码和刚才的 Swift 代码完成的是同样的事情。但是 API 不是和 Swift SDK 中的完全一样。这段代码和一个安卓应用的剩下的代码非常吻合,因为它符合安卓的风格。

成熟的类

最后一个要点,Realm 对象是成熟的类。你可以使用你喜欢的任何编程语言的工具来完成你想做的事情,非常快!

你可以构建这样的功能,为不同的简单的计算属性自动生成数值:

class Repository: Object {

dynamic var stars: Int = 0

var starsDecorated: String {

return "\(stars) ⭐️"

}

}

接下来封装业务逻辑:

extension Repository {

static func all(searchTerm: String? = nil) -> Results {

let realm = try! Realm()

return realm.objects(Repository.self)

.filter("name contains[c] %@", searchTerm ?? "")

.sorted(byProperty: "stars", ascending: false)

}

}

如果你想看看完整的成熟的 Realm 对象,请看 GitHub 上的 **这篇文章的配套项目 ** 。

例子中的 Repository 类功能:

单一数据属性 (id, stars)

相关对象 (favorite)

计算属性 (nameDecorated)

动态属性 (avatarUrl)

客制化 init

索引 (primaryKey(), indexedProperties())

Metadata (ignoredProperties())

单一实体函数 (all(searchTerm:), add(repos:), and toggle(favorite:))

我们希望你喜欢你看到的东西!

我们触及到了 Realm 移动数据库的伟大的功能。它定制的数据引擎给你的程序的性能和健壮性打下了坚实的基础。

这篇文章使用了 Swift 作为例子,但是 Realm 移动数据库在别的语言里面也是非常容易使用的。

你可以看看这些在线文档:

Realm Java on Android,

C# 开发者文档 Realm Xamarin,

使用 [React Native] 完成跨平台开发(https://realm.io/docs/javascript/latest/).

这篇文章仅仅是 Realm 移动数据库系类文章的开篇,希望你能喜欢。下一次,我们将看看一些 the RealmSwift API类,这些类使你能够很容易地构建性能优越的应用。

请看下篇!

About the content

This content has been published here with the express permission of the author.

Marin Todorov

Marin Todorov is an independent iOS consultant and publisher. He’s co-author on the book “RxSwift: Reactive programming with Swift” the author of “iOS Animations by Tutorials”. He’s part of Realm and raywenderlich.com. Besides crafting code, Marin also enjoys blogging, writing books, teaching, and speaking. He sometimes open sources his code. He walked the way to Santiago.

Share

4 design patterns for a RESTless mobile integration »

新闻精选

新闻精选

探索 Java 隐藏的开销

by

Jake Wharton

S 代表着单一职责原则

by

Donn Felker

安卓开发常用工具和第三方库汇总

by

Ryan Cooke

更多新闻

产品

Triangle

Created with Sketch.

Realm 移动端平台

Realm 移动端数据库

Realm Studio

价格

Solutions

Triangle

Created with Sketch.

Realtime Collaboration

API Mobilization

Offline First

扩展

文档

Triangle

Created with Sketch.

Realm 移动端平台

Java

Swift

Objective‑C

JavaScript

.NET

Support

Triangle

Created with Sketch.

Overview

Forums

Blog

Academy

社区

Triangle

Created with Sketch.

Java

Objective‑C

JavaScript

Swift

Xamarin

Realm 报告

Realm 公司

Triangle

Created with Sketch.

关于

Customers

工作机会

报道我们

法律相关

联系我们

Subscribe

×

Get the latest news in your inbox every week

Subscribe for Realm tutorials, new features, and company announcements

Subscribe

Realm Blog

Realm Academy

Subscribe

×

Get the latest news in your inbox every week

Subscribe for Realm tutorials, new features, and company announcements

Subscribe

Realm Blog

Realm Academy

Realm: BUILD BETTER APPS FASTER

© Realm

2014-2024, all rights reserved.

Thanks for subscribing

You will be receiving an email shortly with details on your subscription

Oops something went wrong

You will not be receiving an email shortly with details on your subscription

怎样看待 Realm 这个移动数据库? - 知乎

怎样看待 Realm 这个移动数据库? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册数据库程序员iOS 开发Android 开发怎样看待 Realm 这个移动数据库?Realm数据库基础教程显示全部 ​关注者332被浏览84,154关注问题​写回答​邀请回答​好问题​添加评论​分享​24 个回答默认排序宇文化若无诸葛之才,何来明主顾之?​ 关注说一下个人在开发中遇到的一些小坑...1.RealmObject自带线程保护功能,只能在创建它的线程中访问,在子线程中不能访问。也就是说,如果你在主线程中new了一个RealmObject对象 user,那么在子线程中是访问不了user对象的。要想在子线程中访问,必须先将user存入Ream中,然后在子线程中query出来。2.如果Realm关闭,所有查询得到的RealmObject都不能使用了。如果想在子线程中去查询数据,然后在主线程中使用是无法做到的。所以Realm提供的异步查询就很重要了...3.如果想在Realm.close()之后继续操作查询得到的对象,只能复制一份数据传出来。为防止Realm忘记关闭,个人喜欢将Realm的开启和关闭封装在一个函数中。但是realm Colse掉之后,query得到对象就不能访问了,所以只能复制一份数据传出来。这个比较坑,Realm开发者是为了它的一个特色功能Auto-Update,即自动更新查询到的数据,特意让查询得到的数据与数据库中的数据保持了同步,所以Realm一关,外面的数据也用不了。而且,这个Auto-update暂时还无法关闭,stackOverFlow上有说以后可能会提供关闭这个功能的方法。如果你的RealmObject非常复杂,要copy一份数据将会很麻烦...而且这还不是最坑的,最坑的是下面这条。4.如果直接修改或删除query得到的数据,必须在transaction中完成...也就是说,你根本不能把query返回的对象,当成普通对象去赋值或删除,如果想要直接操作...ok,把对象copy一份传出来...发布于 2016-04-02 11:04​赞同 26​​11 条评论​分享​收藏​喜欢收起​Syter它是我的天空蓝​ 关注昨天请教一位iOS的同事有关coredata的问题,同事说他做了几年iOS开发,我遇到的这个问题他也遇到过,但是从来没有解决过,反正coredata就是搞不定。聊完问题后,他给我推荐了realm,说这个东西好用。我一开始以为和其他的第三方管理db的lib差不多,无非是api更加简化。今天上午花了一上午的时间,看了java和OC的documents,尚未开始用,仅仅是个人见解。1. API确实更加简化,便于开发者方便使用。2. 多线程操作realm数据库似乎相对麻烦一点,不过能接受。3. 很轻松地可以实现一对一,一对多,多对多关系,以及递归 (这个说起coredata,我就好气啊)4. realm的object直接提供了从json转换,这让我们做云api的家伙,真是觉得舒心。5. 网上有说,realm的查询效率比sqlite和coredata的效率快3倍,不过我没找到写入的效率呢?先这样,吃饭去。发布于 2015-10-20 13:08​赞同 8​​12 条评论​分享​收藏​喜欢

Realm: Create reactive mobile apps in a fraction of the time

Realm: Create reactive mobile apps in a fraction of the time

Success!

Menu

产品

Platform

Database

Developers

Forums

Academy

文档

Platform

Database

价格

Support

Company

Blog

报道我们

工作机会

关于

日本語

中文

한국어

English

main navigation

< 产品

Platform

Database

Realm Studio

价格

文档

Database

Java

Objective‑C

JavaScript

Swift

.NET

Support

Overview

Forums

Language

日本語

中文

한국어

English

Blog

Academy

Free Trial

Build better apps faster with edge-to-cloud sync - Free Trial

Menu

产品

Platform

Database

Developers

Forums

Academy

文档

Platform

Database

价格

Support

Company

Blog

报道我们

工作机会

关于

日本語

中文

한국어

English

Free Trial

main navigation

产品

Platform

Database

Realm Studio

价格

文档

Database

Java

Objective‑C

JavaScript

Swift

.NET

Support

Overview

Forums

Language

日本語

中文

한국어

English

Blog

Academy

Free Trial

Realm Academy

Expert content from the mobile experts

Realm

Android

Apple

JavaScript

Architecture

Growth

寻找关于 iOS 的特定内容

无论您正在使用的移动端平台是什么,我们都能够为您提供合适的学习内容!最近,Meghan Kane 的一场关于 iOS 机器学习的讲演已然风靡全球,我们强烈建议您去看一看。想要看更多的内容吗?点击下方的图标,查看所有的 Apple 开发内容。

iOS 机器学习

Swift

让您的 iOS 应用加入到机器学习的浪潮中

by

Meghan Kane

优秀的 iOS 应用架构:MVVM、MVC、VIPER,孰优孰劣?

by

Krzysztof Zabłocki

构建 Swift 风格的 UI

by

Sommer Panage

构建属于自己的工具集

by

Orta Therox

Swift 皇冠上的明珠:不安全的 Swift 和指针类型

by

Nate Cook

Coordinator 与 RxSwift 共同构建的 MVVM 架构

by

Łukasz Mróz

Objective-C 的运行时以及 Swift 的动态性

by

Roy Marmelstein

See 49 more swift articles

Realm

Realm 是为移动端开发而设计的新型数据库

by

Marin Todorov

数据库的设计:深入理解 Realm 的多线程处理机制

by

Realm Team

构建 Swift 框架所面临的挑战

by

Marius Rackwitz

Realm 核心数据库引擎探秘

by

JP Simard

我们如何击败 C++ STL 二叉树搜索

by

Adam Fish

Receive news and updates from Realm straight to your inbox

订阅

Comments

Try! Swift Tokyo Videos

构建 Swift 风格的 UI

by

Sommer Panage

构建属于自己的工具集

by

Orta Therox

Swift 皇冠上的明珠:不安全的 Swift 和指针类型

by

Nate Cook

关于序列和集合需要知道的二三事

by

Soroush Khanlou

现代化的 Core Data

by

Daniel Eggert

Artsy 的测试之旅

by

Ash Furrow

向开源的 Swift 贡献代码

by

Jesse Squires

Reactive Programming

安卓开发常用工具和第三方库汇总

by

Ryan Cooke

后 MVC 时代

by

Maarten Hus

构建属于自己的工具集

by

Orta Therox

Coordinator 与 RxSwift 共同构建的 MVVM 架构

by

Łukasz Mróz

探索专为 Android 而设计的 RxJava 2

by

Jake Wharton

RxJava 介绍

by

Christina Lee

使用 RxSwift 进行响应式编程

by

Scott Gardner

现代化的 Core Data

by

Daniel Eggert

See 3 more Reactive Programming articles

Mobilize Your APIs

Stop spending time on API integration and network failure resiliency code

Get Started

Javascript

后 MVC 时代

by

Maarten Hus

构建属于自己的工具集

by

Orta Therox

使用 C++ 扩展 Node.js

by

Kenneth Geisshirt

Discover True Offline-first Development

Your users don’t stop working because of bad network connectivity. Why should your app?

Learn More

Xamarin & .NET

为什么要用 C# 来作为您的首选编程语言

by

Mads Torgersen

为什么要用 C# 来作为您的首选编程语言

by

Mads Torgersen

Software Architecture

优秀的 iOS 应用架构:MVVM、MVC、VIPER,孰优孰劣?

by

Krzysztof Zabłocki

大规模重构——重写 Instagram Feed 的经验之谈

by

Ryan Nystrom

10 条提升 Android 性能的建议

by

Boris Farber

Latest Articles

安卓开发常用工具和第三方库汇总

by

Ryan Cooke

为什么要用函数式编程?

by

Daniel Steinberg

让您的 iOS 应用加入到机器学习的浪潮中

by

Meghan Kane

优秀的 iOS 应用架构:MVVM、MVC、VIPER,孰优孰劣?

by

Krzysztof Zabłocki

后 MVC 时代

by

Maarten Hus

构建 Swift 风格的 UI

by

Sommer Panage

构建属于自己的工具集

by

Orta Therox

Swift 皇冠上的明珠:不安全的 Swift 和指针类型

by

Nate Cook

Read More

产品

Triangle

Created with Sketch.

Realm 移动端平台

Realm 移动端数据库

Realm Studio

价格

Solutions

Triangle

Created with Sketch.

Realtime Collaboration

API Mobilization

Offline First

扩展

文档

Triangle

Created with Sketch.

Realm 移动端平台

Java

Swift

Objective‑C

JavaScript

.NET

Support

Triangle

Created with Sketch.

Overview

Forums

Blog

Academy

社区

Triangle

Created with Sketch.

Java

Objective‑C

JavaScript

Swift

Xamarin

Realm 报告

Realm 公司

Triangle

Created with Sketch.

关于

Customers

工作机会

报道我们

法律相关

联系我们

Subscribe

×

Get the latest news in your inbox every week

Subscribe for Realm tutorials, new features, and company announcements

Subscribe

Realm Blog

Realm Academy

Subscribe

×

Get the latest news in your inbox every week

Subscribe for Realm tutorials, new features, and company announcements

Subscribe

Realm Blog

Realm Academy

Realm: BUILD BETTER APPS FASTER

© Realm

2014-2024, all rights reserved.

Thanks for subscribing

You will be receiving an email shortly with details on your subscription

Oops something went wrong

You will not be receiving an email shortly with details on your subscription

GitHub - realm/realm-js: Realm is a mobile database: an alternative to SQLite & key-value stores

GitHub - realm/realm-js: Realm is a mobile database: an alternative to SQLite & key-value stores

Skip to content

Toggle navigation

Sign in

Product

Actions

Automate any workflow

Packages

Host and manage packages

Security

Find and fix vulnerabilities

Codespaces

Instant dev environments

Copilot

Write better code with AI

Code review

Manage code changes

Issues

Plan and track work

Discussions

Collaborate outside of code

Explore

All features

Documentation

GitHub Skills

Blog

Solutions

For

Enterprise

Teams

Startups

Education

By Solution

CI/CD & Automation

DevOps

DevSecOps

Resources

Learning Pathways

White papers, Ebooks, Webinars

Customer Stories

Partners

Open Source

GitHub Sponsors

Fund open source developers

The ReadME Project

GitHub community articles

Repositories

Topics

Trending

Collections

Pricing

Search or jump to...

Search code, repositories, users, issues, pull requests...

Search

Clear

Search syntax tips

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

Sign up

You signed in with another tab or window. Reload to refresh your session.

You signed out in another tab or window. Reload to refresh your session.

You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

realm

/

realm-js

Public

Notifications

Fork

557

Star

5.6k

Realm is a mobile database: an alternative to SQLite & key-value stores

realm.io

License

Apache-2.0 license

5.6k

stars

557

forks

Branches

Tags

Activity

Star

Notifications

Code

Issues

562

Pull requests

59

Discussions

Actions

Projects

0

Wiki

Security

Insights

Additional navigation options

Code

Issues

Pull requests

Discussions

Actions

Projects

Wiki

Security

Insights

realm/realm-js

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

 mainBranchesTagsGo to fileCodeFolders and filesNameNameLast commit messageLast commit dateLatest commit History6,574 Commits.github.github  .vscode.vscode  contribcontrib  examplesexamples  install-testsinstall-tests  integration-testsintegration-tests  mediamedia  packagespackages  scriptsscripts  templatestemplates  typedoctypedoc  .clang-format.clang-format  .dockerignore.dockerignore  .eslintignore.eslintignore  .eslintrc.json.eslintrc.json  .gitignore.gitignore  .gitignore-revs.gitignore-revs  .gitmodules.gitmodules  .ignore.ignore  .prebuildrc.prebuildrc  .prettierrc.js.prettierrc.js  .watchmanconfig.watchmanconfig  CHANGELOG.legacy.mdCHANGELOG.legacy.md  CHANGELOG.mdCHANGELOG.md  CHANGELOG.v10.mdCHANGELOG.v10.md  CHANGELOG.v11.mdCHANGELOG.v11.md  COMPATIBILITY.mdCOMPATIBILITY.md  CONTRIBUTING.mdCONTRIBUTING.md  DockerfileDockerfile  Dockerfile.androidDockerfile.android  LICENSELICENSE  README.mdREADME.md  SUPPORT.mdSUPPORT.md  debian-multiarch-arm.Dockerfiledebian-multiarch-arm.Dockerfile  header.eslintrc.jsheader.eslintrc.js  package-lock.jsonpackage-lock.json  package.jsonpackage.json  tsconfig.jsontsconfig.json  View all filesRepository files navigationREADMEApache-2.0 licenseNoteRealm is now Atlas Device SDK - Learn More

The Realm Database

Realm is a mobile database that runs directly inside phones, tablets or wearables. This project hosts the JavaScript & TypeScript implementation of Realm. Currently, we support React Native (JSC & Hermes on iOS & Android), Node.js and Electron (on Windows, MacOS and Linux).

What are the Atlas Device SDKs?

The Atlas Device SDKs are a collection of language and platform specific SDKs, each with a suite of app development tools optimized for data access and persistence on mobile and edge devices. Use the SDKs to build data-driven mobile, edge, web, desktop, and IoT apps.

It might help to think of the Realm database as the persistance layer of the Atlas Device SDKs.

Features

Mobile-first: Realm is the first database built from the ground up to run directly inside phones, tablets and wearables.

Simple: Data is directly exposed as objects and queryable by code, removing the need for ORM's riddled with performance & maintenance issues.

Modern: The database supports relationships, generics, and vectorization.

Fast: It is faster than even raw SQLite on common operations, while maintaining an extremely rich feature set.

MongoDB Atlas Device Sync: Makes it simple to keep data in sync across users, devices, and your backend in real time. Get started for free with a template application and create the cloud backend.

Getting Started

Please see the detailed instructions in our docs to use Atlas Device SDK for Node.js and Atlas Device SDK for React Native. Please notice that currently only Node.js version 18 or later is supported. For React Native users, we have a compatibility matrix showing which versions are supported.

Documentation

Atlas Device SDKs for React Native and Node.js

The documentation for the Atlas Device SDK for React Native can be found at mongodb.com/docs/realm/sdk/react-native/. The documentation for the Atlas Device SDK for Node.js can be found at mongodb.com/docs/realm/sdk/node.

The API reference is located at docs.mongodb.com/realm-sdks/js/latest/.

If you are using React Native, please also take a look the README for @realm/react, which provides React hooks to make working with Realm easier.

TypeScript models

TypeScript is a popular alternative to pure JavaScript as it provide static typing. Our TypeScript support consists of two parts

Accurate TypeScript definitions

@realm/babel-plugin to transform TypeScript classes to Realm schemas. An example of a model class is:

class Task extends Realm.Object {

_id = new Realm.BSON.ObjectId();

description!: string;

@index

isComplete = false;

static primaryKey = "_id";

constructor(realm, description: string) {

super(realm, { description });

}

}

Integration with React Native

The Atlas Device SDK for React Native provides persistence of objects and advanced queries for persisted objects. You can have easier integration with React Native by using @realm/react.

Template apps

We have TypeScript templates to help you get started using Realm. Follow the links to your desired template and follow the instructions there to get up and running fast.

Expo

React Native

Getting Help

Need help with your code?: Look for previous questions on the #realm tag — or ask a new question. You can also check out our Community Forum where general questions about how to do something can be discussed.

Have a bug to report? Open an issue. If possible, include the version of Realm, a full log, the Realm file, and a project that shows the issue.

Have a feature request? Open an issue. Tell us what the feature should do, and why you want the feature.

Contributing

See CONTRIBUTING.md for more details!

Known issues

Realm is not compatible with the legacy Chrome Debugger. The following debugging methods are supported:

Hermes Debugger is the recommended way for debugging modern React Native apps.

Safari also has a similar feature set, but requires some setup and only supports debugging in iOS.

NOTE: For the above methods, it is not necessary to enable Debug with Chrome in the Debug Menu.

Building the SDK

For instructions on building the SDK from the source, see the building.md file.

Troubleshooting missing binary

It's possible after installing and running Realm that one encounters the error Could not find the Realm binary. Here are are some tips to help with this.

Compatibility

Consult our COMPATIBILITY.md to ensure you are running compatible version of realm with the supported versions of node, react-native or expo.

React Native

iOS

Typically this error occurs when the pod dependencies haven't been updating. Try running the following command

npx pod-install

If that still doesn't help it's possible there are some caching errors with your build or your pod dependencies. The following commands can be used to safely clear these caches:

rm -rf ios/Pods

rm ios/Podfile.lock

rm -rf ~/Library/Developer/Xcode/DerivedData

Afterwards, reinstall pods and try again. If this still doesn't work, ensure that node_modules/realm/react-native/ios/realm-js-ios.xcframework exists and contains a binary for your architecture. If this is missing, try reinstalling the `realm`` npm package.

Android

This can occur when installing realm and not performing a clean build. The following commands can be used to clear your cache:

cd android

./gradlew clean

Afterwards, try and rebuild for Android. If you are still encountering problems, ensure that node_moduels/realm/react-native/android/src/main/jniLibs contains a realm binary for your architecture. If this is missing, try reinstalling the realm npm package.

Expo

If you are using Expo, a common pitfall is not installing the expo-dev-client and using the Development Client specific scripts to build and run your React Native project in Expo. The Development Client allows you to create a local version of Expo Go which includes 3rd party libraries such as Realm. If you would like to use realm in an Expo project, the following steps can help.

install the expo-dev-client:

npm install expo-dev-client

build the dev client for iOS

npx expo run:ios

build the dev client for Android

npx expo run:android

start the bundler without building

npx expo start --dev-client

Node/Electron

When running npm install realm the realm binaries for the detected architecture are downloaded into node_modules/realm/prebuilds. If this directory is missing or empty, ensure that there weren't any network issues reported on installation.

Analytics

Asynchronously submits install information to Realm.

Why are we doing this? In short, because it helps us build a better product

for you. None of the data personally identifies you, your employer or your

app, but it will help us understand what language you use, what Node.js

versions you target, etc. Having this info will help prioritizing our time,

adding new features and deprecating old features. Collecting an anonymized

application path & anonymized machine identifier is the only way for us to

count actual usage of the other metrics accurately. If we don’t have a way to

deduplicate the info reported, it will be useless, as a single developer

npm install-ing the same app 10 times would report 10 times more than another

developer that only installs once, making the data all but useless.

No one likes sharing data unless it’s necessary, we get it, and we’ve

debated adding this for a long long time. If you truly, absolutely

feel compelled to not send this data back to Realm, then you can set an env

variable named REALM_DISABLE_ANALYTICS.

Currently the following information is reported:

What version of Realm is being installed.

The OS platform and version which is being used.

If a JavaScript framework (currently React Native and Electron) is used and its version.

Which JavaScript engine is being used.

Node.js version number.

TypeScript version if used.

An anonymous machine identifier and hashed application name to aggregate the other information on.

Moreover, we unconditionally write various constants to a file which we might use at runtime.

Code of Conduct

This project adheres to the MongoDB Code of Conduct.

By participating, you are expected to uphold this code. Please report

unacceptable behavior to community-conduct@mongodb.com.

License

Realm JS and Realm Core are published under the Apache License 2.0.

Feedback

If you use Realm and are happy with it, all we ask is that you please consider sending out a tweet mentioning @realm to share your thoughts

And if you don't like it, please let us know what you would like improved, so we can fix it!

Contributors

Made with contrib.rocks.

About

Realm is a mobile database: an alternative to SQLite & key-value stores

realm.io

Topics

reactive

realm

realtime-database

mobile-first

reactnative

nosql-database

realm-mobile-database

mobile-database

Resources

Readme

License

Apache-2.0 license

Activity

Custom properties

Stars

5.6k

stars

Watchers

107

watching

Forks

557

forks

Report repository

Releases

244

Realm JavaScript v12.6.2

Latest

Mar 4, 2024

+ 243 releases

Packages

2

 

 

Used by 10.4k

+ 10,347

Contributors

117

+ 103 contributors

Languages

TypeScript

92.8%

JavaScript

2.2%

C++

1.7%

CMake

0.6%

Objective-C++

0.5%

Java

0.5%

Other

1.7%

Footer

© 2024 GitHub, Inc.

Footer navigation

Terms

Privacy

Security

Status

Docs

Contact

Manage cookies

Do not share my personal information

You can’t perform that action at this time.

在 Realm 学院中学习如何使用 Realm

在 Realm 学院中学习如何使用 Realm

Success!

Menu

产品

Platform

Database

Developers

Forums

Academy

文档

Platform

Database

价格

Support

Company

Blog

报道我们

工作机会

关于

日本語

中文

한국어

English

main navigation

< 产品

Platform

Database

Realm Studio

价格

文档

Database

Java

Objective‑C

JavaScript

Swift

.NET

Support

Overview

Forums

Language

日本語

中文

한국어

English

Blog

Academy

Free Trial

Build better apps faster with edge-to-cloud sync - Free Trial

Menu

产品

Platform

Database

Developers

Forums

Academy

文档

Platform

Database

价格

Support

Company

Blog

报道我们

工作机会

关于

日本語

中文

한국어

English

Free Trial

main navigation

产品

Platform

Database

Realm Studio

价格

文档

Database

Java

Objective‑C

JavaScript

Swift

.NET

Support

Overview

Forums

Language

日本語

中文

한국어

English

Blog

Academy

Free Trial

Realm Academy

Expert content from the mobile experts

Realm

Android

Apple

JavaScript

Architecture

Growth

Receive news and updates from Realm straight to your inbox

订阅

Comments

Realm 是为移动端开发而设计的新型数据库

by

Marin Todorov

数据库的设计:深入理解 Realm 的多线程处理机制

by

Realm Team

构建 Swift 框架所面临的挑战

by

Marius Rackwitz

Realm 核心数据库引擎探秘

by

JP Simard

我们如何击败 C++ STL 二叉树搜索

by

Adam Fish

产品

Triangle

Created with Sketch.

Realm 移动端平台

Realm 移动端数据库

Realm Studio

价格

Solutions

Triangle

Created with Sketch.

Realtime Collaboration

API Mobilization

Offline First

扩展

文档

Triangle

Created with Sketch.

Realm 移动端平台

Java

Swift

Objective‑C

JavaScript

.NET

Support

Triangle

Created with Sketch.

Overview

Forums

Blog

Academy

社区

Triangle

Created with Sketch.

Java

Objective‑C

JavaScript

Swift

Xamarin

Realm 报告

Realm 公司

Triangle

Created with Sketch.

关于

Customers

工作机会

报道我们

法律相关

联系我们

Subscribe

×

Get the latest news in your inbox every week

Subscribe for Realm tutorials, new features, and company announcements

Subscribe

Realm Blog

Realm Academy

Subscribe

×

Get the latest news in your inbox every week

Subscribe for Realm tutorials, new features, and company announcements

Subscribe

Realm Blog

Realm Academy

Realm: BUILD BETTER APPS FASTER

© Realm

2014-2024, all rights reserved.

Thanks for subscribing

You will be receiving an email shortly with details on your subscription

Oops something went wrong

You will not be receiving an email shortly with details on your subscription