Tag: realm

注意杯子

几周前,我去了Google。 Google在苏黎世设有出色的办公室,我认为让他们组织一次技术聚会对于从内部看到它们确实是一个很好的机会。 这是美好而有趣的一天,我很高兴在一个非常友好的环境中遇到好人。 一如往常,在访问大公司时,他们给了我们一些商品。 这次,我们得到了一个带贴纸的袋子,一些电话配件和……杯子! 上周五早上我在家,我想“现在是在新杯子里喝咖啡的好时机” 所以我在杯子里装了些牛奶,然后放入微波炉中。 两分钟后,我从微波炉中取出杯子,手烧了。 像我将手伸到撒但的烟囱上一样燃烧。 杯子的把手很热,太热了…… 那时,我注意到杯子实际上是金属的,并且由于其形状,其手柄形成了一个电磁拱。 这是一个天线,它接收了微波内部两分钟内的所有微波。 最后,牛奶很冷,可能比以前更冷,并且一天余下的时间我的手都非常疼痛。 我意识到……实际上这并不是我第一次遇到这种情况。 实际上,这是一个非常熟悉的场景。 大公司,不仅是Google,都会免费为您提供很多东西,不仅免费提供杯具,还为您提供框架和工具:React Native,Realm等… 它们都是免费的,一开始看起来很酷。 您可能会像我收到杯赛时一样快乐。 但是下次,请注意杯子… 杯子实际上是一个很棒的杯子,我现在用它来喝冷液体🍻。 问题实际上不是杯子,而是在检查它是否为金属之前使用它,因此它不是喝咖啡的好杯子。 框架和工具也可能发生同样的情况。 在适当的情况下使用React Native,Realm等……它们都是很好的工具,但同时如果不使用它们,则真的很痛苦。 结论 注意杯子 如有任何疑问,请随时在github,twitter或dcordero.me上关注我。

第1部分:Swift中的领域CRUD操作

好的 这是Swift初学者的快速入门教程。 在继续讨论第2部分中的教程之前,我将快速介绍三个主要令人困惑的术语:Swift,CRUD和Realm。 如果您设法找到本文,那么您至少应该对Swift有所了解。 这是一种很棒的语言,可让您为Apple的所有事情做出色的工作。 Swift的新版本包含Core ML,可用于构建更多智能应用程序以及其他非常酷的功能。 在使用键盘杀死自己之前,我将对CRUD进行更详细的介绍。 在编程中,CRUD是首字母缩写词,代表创建,检索,更新和删除以及其他bla-bla-bla变体。 这些是您在尝试弄清楚时会遇到的四个基本操作: “我要将数据存储在哪里?” 让我向您展示CRUD操作的工作方式。 假设您想跟踪那个把您从幼儿园操场的秋千上推开的坏孩子。 为此,您需要执行四个主要操作: 创建:通过在纸上写下坏孩子的名字,将其记录在本地数据库中。 您可以添加他们的图片以及其他详细信息。 全取决于你。 检索:现在,您只需简单地拉出显示在纸张(本地数据库)上的信息,就可以通过名称和其他说明来调用该儿童。 注意数据库的位置。 我曾经把我的袜子藏在袜子里。 更新:然后,您可以通过Swift中的CRUD操作更新其记录,从而添加有关该儿童的更多信息。 删除:如果该玩偶对您有好处,并且没有记录可追踪,那么您可以删除您的条目并切换到另一个玩偶。 简单吧? 这些是我们将在本教程中使用Realm复制的CRUD操作。 那么,什么是境界? Realm是一个实时的跨平台对象数据库,可让您使用设备内部的CRUD操作来处理数据。 这是一个用于本地数据存储的出色移动平台,可替代SQLite和Core Data,由于学习曲线陡峭,可能成为“麻烦中的烦恼”。 是的,摘要化SQLite和Core Data的脚本规则将使您感到便秘! 与常规的服务器端数据库不同,您可以在应用程序内直接使用Realm来在设备上本地存储和查询数据,每秒查询率为31。您不需要幼稚园的程度就可以理解下图。 Realm是先离线构建的,它可以通过所有移动应用程序中的双向数据同步无缝地处理您的数据。 我在所有移动应用中都说过吗? 对! 领域可用于Java,Swift,Objective‑C,JavaScript和Xamarin! 好的,现在让我们在第2部分中进行应用。

使用Realm.io保持Swift枚举

Swift枚举是将语义赋予非自解释属性的好方法。 如果使用得当,它们为我们提供了更具可读性的代码库,以及一种无需查看文档即可快速选择正确值的方法。 你更喜欢哪个? 后者立即讲述了整个故事,不是吗? 但是,由于它是一个自定义枚举,而不是原子类型,因此Realm无法立即存储它。 但是不要担心,这很容易解决! 如何使用Realm存储枚举 这里的想法是为我们的枚举提供自定义的getter和setter方法,并将原子表示形式存储在Realm中。 这是我们的示例枚举,它枚举了所有任务类型: 现在,由于我们无法将TaskType对象存储在Realm存储区中,因此我们必须存储某种标识符,以后可以将其转换为枚举表示形式。 TaskType方便地是Int的枚举,这意味着我们可以只存储其rawValue 。 但是,如果我们拥有Realm不支持的类型的枚举(例如UInt ),则我们可以选择存储枚举值的索引或为每个枚举分配一个可以存储的标识符。 为了存储表示,我们将创建一个私有变量,该变量将包含标识符和一个公共变量(Realm不会尝试持久化),以及一组访问器,以使用持久化变量进行相应的操作。 如您所见,我们将与Realm兼容的privateType保留为私有,以确保我们使用支持枚举的type变量。 为type变量定义的getter和setter负责将存储的标识符转换为我们的枚举,反之亦然。

成为Swift 3绝地大师

与Objective-C相比, Swift增加了语言功能,使开发人员的代码更安全 , 更快 , 更可靠 , 更可预测 。 1创建一个Swift文件来管理您的样式 设置外观属性的最简洁方法: 为您创建的每个标签或按钮设置颜色和字体 ,只需创建一个扩展某些类的Swift文件。 您可以在两分钟内更改应用程序的样式。 🎨 使用静态的计算变量。 Swift 3允许我们使用没有任何初始化程序的变量。 // Colors.swift 扩展UIColor { 静态var buttonColor:UIColor { 返回UIColor(红色:0.50,绿色:0.50,蓝色:0.50,alpha:1) } 静态var bodyColor:UIColor { 返回UIColor(红色:0.30,绿色:0.0,蓝色:0.30,alpha:1) } 静态var backgroundColor:UIColor { 返回UIColor(红色:0.00,绿色:0.7,蓝色:0.40,alpha:1) } } // FontStyles.swift 扩展UIFont { 静态var bodyFont:UIFont { 返回UIFont(名称:“ Helvetica”,大小:14) } 静态var titleFont:UIFont { 返回UIFont(名称:“ Helvetica-Bold”,大小:18) } } […]

领域平台

当我们首先开始谈论Realm Platform时,我们需要关注Realm数据库提供的功能,realm是我们可以在本地存储和获取数据的地方,当记录被更改并需要手动更新到服务器时,这是一项繁琐的工作。 由于每个人都需要实时数据,因此Realm Platform进入解决方案,因为即使一秒钟的延迟数据也被标记为过时,Realm Platform是实时同步的解决方案,并提供身份验证和更多功能。 让我们开始吧… Realm平台是基于noSQL的服务器和客户端组件的组合,这些组件通过快速高效的同步协议进行连接,以启用实时的,已连接的应用程序,响应迅速且性能与网络状态无关的服务。 领域平台具有两个主要组件。 领域数据库 领域对象服务器 这两个组件协同工作以自动同步数据。 领域数据库 Realm数据库嵌入在客户端上,是一个功能齐全的,面向对象的跨平台数据库,可将数据持久存储在设备上 Realm数据库是轻量级且高性能的,能够处理非常大的数据负载并在几分之一秒内运行查询。 它基于共享的活动对象,无需编写网络,序列化或对象关系映射代码,即可与Realm Object Server无缝无缝地实时同步数据。 领域对象服务器 Realm的统一数据模型扩展到Realm对象服务器,该服务器在设备上镜像Realm数据库。 它充当移动应用程序体系结构中的中间件组件,并管理数据同步,事件处理以及与旧系统的集成。 Realm Object Server可以实时高效地同时在许多设备上同步数据,并自动解决冲突。 首先,我们需要安装Realm Object Server 要托管Realm对象服务器,这些是受支持的操作系统 macOS 10以上 Ubuntu 16.04以上 RHEL 6+ CentOS 7以上 端口要求 领域对象服务器利用TCP上的Web套接字连接来同步数据。 这意味着您将需要确保防火墙允许通过ROS配置为使用的任何端口进行TCP通信。 默认情况下,这是用于HTTP流量的端口9080 。 快速开始安装 curl-s https://raw.githubusercontent.com/realm/realm-object-server/master/install.sh | bash 手动安装 // Ubuntu 16.04(64位;不支持32位) //建议您以普通用户身份安装服务器。 sudoapt获取更新 sudoapt-get install build-essential libssl-dev […]

Realm移动平台-探索实时数据同步功能

自2016年9月发布以来,Realm移动平台一直是人们期待已久的技术,它于2017年1月首次稳定发布证明了其价值。 它具有允许Realm Object Server与客户端数据库之间以两种方式进行数据同步的能力以及事件处理能力,这使得开发未来的移动应用程序成为可能。 Realm是一个精明的移动平台,是在充分了解最新的移动应用程序开发挑战之后开发的。 它还具有扩大开发人员对即将到来的移动趋势的视野的能力。 以下是其一些强度特征: 托管的自由:Realm Mobile Platform可以在本地和云上托管 基于对象:领域是基于对象的; 因此对象本身反映了数据库。 开发人员可以轻松避免与ORM相关的困难 脱机优先功能:由于设备上嵌入了Realm Mobile数据库,因此Realm可以提供广泛的脱机优先体验 易于集成:可轻松与现有基础架构集成 它支持服务器端业务逻辑 我们创建了一个Hello World移动应用程序,使用户能够绘制任何草图或使用虚拟铅笔书写文本。 我们将通过它探索Realm移动平台的实时数据同步功能。 我们的应用程序“ Hello World”正被位于不同地理位置的两个iOS用户使用他们的iOS设备>>他们正在通过在其各个设备上用虚拟铅笔绘制草图来共享草图>>一位用户正在其设备中绘制草图,其他用户可以实时查看草图开发过程(相同的形状和颜色代码对其他人可见)。 领域对象服务器配置 领域应用程序用户身份验证 实时同步过程 下载“ Mac OS捆绑软件”或“ Linux OS捆绑软件” 打开“ realm-mobile-platform”文件夹,然后双击文件“ start-object-server.command”,启动“ Realm Object Server”。 这将打开一个终端窗口并启动Realm服务器。 它将自动打开仪表板,如下图所示。 该仪表板是基于浏览器的应用程序,它提供一些必需的信息,例如:仪表板,领域,用户,功能等。 5.您可以在此处创建所需的用户数 现在运行该应用程序。 在应用程序中,我们通过向他们的应用程序提供凭据来验证用户连接领域服务器。 认证过程已在下面用技术术语进行了描述。 -(无效)登录 //基本服务器路径 NSURL * authURL = [NSURL URLWithString:[NSString stringWithFormat:@“ http://%@:9080”,kIPAddress]]; //通过`start-object-server.command’运行Realm […]

使用领域的简单iOS数据持久性

为什么是境界? 让我们从一些介绍开始。 Realm移动数据库是为移动应用程序设计的跨平台移动数据库解决方案,它具有许多优势,例如,它快速,易于设置并且需要更少的样板代码。 而且,Realm对象服务器已于去年发布,也许将来我会尝试macOS版本。 模式与模型 为简单起见,在此演示中我仅使用一个名为BookObject表,该表包含四个属性,包括bookID , name , comment和rating 。 以下是我的领域对象的定义。 final class BookObject: Object { dynamic var bookID: String = UUID().uuidString dynamic var name: String = “” dynamic var comment: String? = nil dynamic var rating: Int = 0 } 由于线程安全和关注点分离,我定义了另一个不变的模型结构,称为Book并使用它来在数据库中显示每本书的信息。 struct Book { enum RatingScale: Int { case notRecommended = 0 case […]

使用Swift 3和Realm同步Apple Watch和iPhone

我需要从苹果手表和iPhone显示和修改我的数据结构。 数据库: 我目前正在使用一个简单的领域结构,我有一个对象A和一个对象B可以容纳大量的A。 所以在iPhone上,用户可以创build一个B并添加A,然后查看所有的A和B。 我想让苹果手表显示当前B的所有A,并给予用户在当前B上添加新A的机会。 我试图这样做的方式: 我想从iPhone移动洞Realm文件到手表或其他方式。 (这是来自互联网的一个提示) iPhone代码: override func viewDidLoad() { super.viewDidLoad() if WCSession.isSupported() { //makes sure it's not an iPad or iPod let watchSession = WCSession.default() watchSession.delegate = self watchSession.activate() transferRealmFile() if watchSession.isWatchAppInstalled { do { try watchSession.updateApplicationContext(["foo": "bar"]) } catch let error as NSError { print(error.description) } } } } func […]

与WatchOS共享Realm数据

在我的项目中,我想同时使用一个Realm数据库与我的iOS 10应用程序和我的watchOs 3应用程序。 所以我所做的就是将框架添加到三个不同目标的embedded式二进制文件中。 这发生了很好的工作,但watchKit扩展似乎无法识别我在iOS环境中创build的对象。 这两个设备之间如何共享Realm数据库?