Swift 3:单例的属性观察器

2024-02-27

我想知道是否有任何方法可以观察单例类的某个属性的变化

就我而言,对于 Realm,我有这样的东西

class User: Object {
   dynamic var name:String = ""
   dynamic var email:String = ""
   dynamic var id:String = ""
   dynamic var picURL:String = ""
   dynamic var pic:Data = Data()

    static let currentUser = User()
    {
        didSet
        {
            try! realm.write {
                realm.add(currentUser, update: true)
            }
    }
  }
}

我想要实现的目标是我希望我的应用程序中只有一个用户对象,并且每当其任何属性被修改时,我都想将其保存到领域。

然而,上面的例子显示了错误

“let”声明不能观察属性

你会如何处理它?您认为我的想法是拥有 Realm 对象单例并在某些属性更改时更新它是一个好主意吗?

我想知道拥有由 Realm 持久保存的类的单例对象是否真的有意义。


It's not possible to have a blanket observer for a single Realm Object at the moment, however there's an issue tracking it in the Realm GitHub https://github.com/realm/realm-cocoa/issues/3431 and I believe it's being prioritized at the moment.

Alcivanio 是正确的,您需要手动触发更新事件以确保更改保留到 Realm。话虽这么说,因为 Realm 控制持久对象中的访问器,didSet一旦对象被保存到 Realm 中,不保证会被调用。出于简单性原因,我建议使用闭包来更新用户对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 3:单例的属性观察器 的相关文章

  • Xcode 8 / Swift 3:“UIViewController 类型的表达式?未使用”警告

    我有以下函数 它之前编译得很干净 但在 Xcode 8 中生成警告 func exitViewController navigationController popViewController animated true UIViewCon
  • Apple Mach-O 链接器错误(静态,不是 ld)

    我最近遇到了 Apple Mach O 链接器错误 大多数指南建议将 构建设置 中的位码更改为 否 但它仅适用于 ld 错误 这与我的不同 我会提供截图 请帮忙修复bug pod HandySwift 导致了错误的出现 这是它的 Githu
  • SwiftUI 意外地自动弹出 NavigationLink

    我有一个简单的用例 其中一个屏幕使用 NavigationLink 推送另一个屏幕 iOS 14 5 有一个奇怪的行为 即推送的屏幕在被推送后立即弹出 Code NavigationLink destination EmptyView Em
  • 为什么选择选择器选项后我的 SwiftUI 页面标题会发生变化?

    struct SettingsView View let settings Setting Setting name Aperture Increments options 1 3 1 2 1 Setting name Shutter Sp
  • Swift:长按手势识别器 - 检测轻击和长按

    我想连接一个动作 如果手势是点击 它会以特定的方式为对象设置动画 但如果按下持续时间超过 0 5 秒 它会执行其他操作 现在 我刚刚连接了动画 我不知道如何区分长按和点击 如何访问新闻持续时间以实现上述目的 IBAction func ta
  • iOS 7 tabBar 横线,如何去掉?

    Apple 在 iOS 7 中的 tabBar 上添加了一条细线 该线应该在 tabBar 和 UI 之间起到阴影或淡入淡出的作用 由于我使用的是定制的 tabBar 这条线非常令人恼火 你如何删除它 请告诉我这是可能的 否则我需要重新设计
  • 我的 UICollectionView 无法使用 Swift 平滑滚动

    我有一个CollectionView它使单元出队取决于message类型 例如 文本 图像 我遇到的问题是当我向上 向下滚动时滚动确实很不稳定 因此用户体验不是很好 这仅在第一次加载单元格时发生 之后滚动就会平滑 我有什么想法可以解决这个问
  • SwiftUI:隐藏键盘但显示光标

    我想使用自定义按钮将文本输入到TextField 但仍显示并移动光标 有没有办法隐藏默认键盘 同时仍然显示光标 我希望有这样的事情 TextField text text keyboardType none 这是它目前的样子 您可以使用UI
  • 未知异常和崩溃

    当我尝试快速滚动表格视图或从远程重新加载数据时 我的应用程序崩溃了 当我先进行远程获取然后滚动表格视图时 一切似乎都工作正常 我不知道下面的崩溃日志意味着什么 它只是有时工作正常 有时崩溃 Incident Identifier 710A1
  • 如何使用phonegap在iOS应用程序中防止键盘推送webview

    当屏幕底部的输入字段获得焦点时 键盘会向上推我的网络视图 并且页面的上部不再可见 我想防止键盘推高网络视图 有人有主意吗 对焦 设置window scrollTo 0 0 这可以防止键盘完全推高 webview input on focus
  • 使用 UITabBarController 时覆盖整个屏幕的视图?

    我想在 UITabBarController 设置中在整个屏幕上覆盖 HUD 样式的透明图形 执行此操作的按钮位于第一个选项卡的屏幕 FirstViewController 中 并且覆盖层也应该覆盖选项卡 这可能吗 您可以将新视图直接附加到
  • 当应用程序进入前台时,如何重新启动基于块的动画?

    我有以下基于块的动画 UIView animateWithDuration 0 5f delay 0 0f options UIViewAnimationOptionRepeat UIViewAnimationOptionAutorever
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • 通过 Button Swift 中的标签发送行和部分

    我里面有这个cellForRowAtIndexPath cell plusBut tag indexPath row cell plusBut addTarget self action plusHit forControlEvents U
  • Xcode 异步单元测试在主线程上等待

    我正在尝试使用 Xcode 中的单元测试来测试一些异步代码 但主线程被阻塞 问题在于 某些正在测试的代码期望从 iOS 类 AVFoundation 接收回调 但是 AVFoundation 类似乎只会在主线程上回调 问题是 如果我正在进行
  • UICollectionView setLayout:animated: 不保留 zIndex

    我注意到打电话时setLayout animated in a UICollectionView要在两个布局之间切换 当前可见的单元格不遵循zIndex它的布局属性已设置在layoutAttributesForItemAtIndexPath
  • ios8 键盘高度有所不同

    我使用下面的代码来获取键盘高度 该高度在带有 ios8 的 iPhone 5s 设备中与带有 ios7 的 IPhone4s 设备中有所不同 因此 当我在带有 ios8 的 iPhone5s 中点击它时 我的文本字段移动得非常高 而相同的代
  • UIViewController 内的 UIsearchController 使用自动布局

    有没有人成功实施过UIViewController其中包含两个UISearchController searchBar and a UItableView使用自动布局来布局所有内容 我正在尝试实现类似的目标1密码 https itunes
  • 致命错误:在 Swift 中解包可选值时意外发现 nil

    所以我试图获取 Swift 中输入字段的文本 这就是我得到的 class ViewController UIViewController IBOutlet var passwordField UITextField IBOutlet var
  • Fitbit oauth2 公共 API 停止工作。给出错误 - 抱歉,这不是你..是我们

    几个月前 我准备了一个关于 Fitbit oauth2 公共 API 的演示 其中我使用特定用户登录并获取他的活动 一切正常 但最近 我打开演示并尝试使用同一用户登录 但它没有登录并反复出现此错误 我尝试更改在 Fitbit 上注册的演示应

随机推荐

  • 强制 Grails/Weblogic 仅使用 HTTPS 协议进行重定向

    我在项目中使用 Grails 2 2 2 并且我的应用程序发出不需要的 http 重定向而不是 https 重定向 目前 我们在 Oracle Weblogic 前面有一个 F5 负载均衡器 F5 正在从 Weblogic 卸载我们的 SS
  • Swift 支持静态类吗?

    我想知道您是否可以在 swift 中创建类似于 C 中的静态类 即无法实例化的类 只能具有静态函数和静态属性 这些类型的课程可以快速实现吗 如果没有 考虑到 Swift 中可用的工具 重新创建这种设计模式的最有效方法是什么 不 Swift
  • HBase:使用Java API创建表时指定版本

    我知道我们可以通过以下方式从 hbase shell 执行此操作 create t1 NAME gt f1 VERSIONS gt 5 我在中找不到任何相应的选项HTableDesctiptor在 Java API 中 知道如何做到这一点吗
  • 错误:无法统计文件“XX.csv”:未知错误

    我运行这个命令 COPY XXX FROM D XXX csv WITH FORMAT CSV HEADER TRUE NULL NULL 在Windows 7中 它可以成功导入小于1GB的CSV文件 如果文件大于 1GB 我会收到 未知错
  • 数据结构,C#:~O(1) 使用范围键查找?

    我有一个数据集 该数据集将提供一个查找表 给定一个数字 我应该能够查找该数字的相应值 不过 数据集 假设是 CSV 有一些注意事项 代替 1 ABC 2 XYZ 3 LMN 这些数字是范围 是 通过 而不是负数 1 3 ABC 1 2 an
  • 从 swift 3 迁移到 swift 4 - 无法将 String 转换为预期的 String.Element

    我正在将代码从 swift 3 转换为 swift 4 并在以下代码中收到此错误 即使当我尝试使用 flatmap 展平数组时我也会得到这个 无法将 String 类型的值转换为预期的参数类型 String Element 又名 字符 if
  • 将日期中的月份日期更改为第一天 (01)

    我想将月份中的某一天设置为Date到当月的开始日期 01 现在我使用以下内容 currentDate lt Sys Date for getting current system date eg 2012 11 06 formatDate
  • 如何提取 OLE 容器的内容?

    我需要打开 MS Word 文件 doc 并提取其组成文件 1 CompObj WordDocument 等 像 7 zip 这样的东西可以用来手动执行此操作 但我需要以编程方式执行此操作 我发现 Word 文档是一个 OLE 容器 因此可
  • Java对象分配开销

    我正在用 Java 编写一个不可变的 DOM 树 以简化多线程的访问 然而 它确实需要尽可能快地支持插入和更新 由于它是不可变的 如果我对树的第 N 层上的节点进行更改 我需要分配至少 N 个新节点才能返回新树 我的问题是 预先分配节点而不
  • 数据框能做什么而 tibble 不能做什么?

    Tidyverse 的粉丝经常给出使用 tibbles 而不是数据帧的几个优点 其中大多数似乎都是为了保护用户免于犯错误而设计的 例如 与数据帧不同 tibbles 不需要一个 drop FALSE不从数据中删除维度的论点 不会让 运算符对
  • 如何在点击推送通知时打开Fragment

    我的 Firebasemessagingservice 类代码用于传递意图 private void showNotification String message Intent intent new Intent this DrawerA
  • 您使用哪种布局管理器?

    大家都用什么java GUI布局管理器 最近 我一直在使用米格布局 http www miglayout com 其中有一些强大的组件控件 只是想看看其他开发人员除了标准 JDK 之外还使用什么 米格布局 http www miglayou
  • 在 CollapsingToolbarLayout 中以编程方式更改layout_scrollFlags

    我的 xml 中有以下 CollapsingToolbarLayout 标记
  • C# 类的属性包

    访问 C 类属性 如 JavaScript 语言 将使生活变得更加轻松 我们如何在 C 中做到这一点 例如 someObject Property simple string Console WriteLine someObject Fir
  • 比较 Oracle 中的字符串

    我需要在表中查询给定字符串的值 该表区分大小写 但我想在比较中执行 ToLower 假设我有一个包含以下数据的类表 class teacher Mat101 Smith MAT101 Jones mat101 Abram ENG102 Sm
  • Perl 中 grep 的“no autovivication”编译指示失败

    我正在尝试使用该模块关闭自动激活 https metacpan org pod autovivification https metacpan org pod autovivification但 grep 失败 usr bin env pe
  • 定时器内存泄漏

    我正在使用一个在侦听器事件上取消并重新启动的计时器 除了计时器线程泄漏整个外部类之外 一切都工作正常 我的定时器实现如下 if timer null timer cancel timer null timer new Timer timer
  • Haskell:输入“putStrLn”时解析错误

    我刚刚编写了我的第一个 Haskell 程序 但有一个我无法理解的错误 我认为这是对的 因为我只是像书上的例子一样写的 有人可以帮我吗 main do putStrLn Hello what s your name name lt getL
  • 有趣的正则表达式 - 匹配字符数等于 2^n 的单词

    嘿 我一直在寻找有关正则表达式的反思主题 我想要一个正则表达式来匹配单词列表中包含 2 n 个字符的每个单词 其中 n 是自然数 为了简单起见 我们假设一个单词只是一个序列o我们还假设该列表由单词组成 后跟单词所包含的字符数 并用空格分隔当
  • Swift 3:单例的属性观察器

    我想知道是否有任何方法可以观察单例类的某个属性的变化 就我而言 对于 Realm 我有这样的东西 class User Object dynamic var name String dynamic var email String dyna