在 Firebase 中为 TextView Swift 保存字体和大小的方法是什么

2024-05-14

我想在 Firebase 中保存 Swift 中 TextView 的字体、大小和对齐方式 这样我就可以在另一个视图中调用它。

我只能将颜色保存在 Firebase 中。 这是显示我是如何做到的的代码。

@IBAction func SendBtn(_ sender: Any) {

    if let profileImage = SelecSubStorge , let  profileIMG = profileImage.jpegData(compressionQuality: 0.1) {
        
        let udidImage = NSUUID().uuidString
        let storeg = Storage.storage().reference(withPath: "gs://myproduct-744cb.appspot.com").child(udidImage)
        
        storeg.putData(profileIMG, metadata: nil) { metaDate, error in
            if error != nil {
                print(error?.localizedDescription)
                return
            } else {
                storeg.downloadURL { url, error in
                    let imgSub = url?.absoluteString
                    
                    let ref = Database.database().reference()
                    let sub = ref.child("Sub")
                    let udid = sub.childByAutoId().key
                    let setRef = sub.child(udid!)
                    let value = ["sub": self.subjectLB.text , "detiles" : self.detilesTextview.text , "ImgSub" : imgSub , "SubID" : udid , self.labelColor : "Color"] as [AnyHashable : Any]
                    setRef.setValue(value) { error, ref in
                        if error != nil {
                            print(error?.localizedDescription)
                        } else {
                            let alert = UIAlertController(title: "Done", message: "Done Send", preferredStyle: UIAlertController.Style.alert)
                                    alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))
                                    self.present(alert, animated: true, completion: nil)
                        }
                    }
                }
            }
        }
    }
}

@IBAction func ChangeColorBtn(_ sender: Any) {
    let colorPicher = UIColorPickerViewController()
    colorPicher.delegate = self
    present(colorPicher, animated: true, completion: nil)
}
func colorPickerViewControllerDidSelectColor(_ viewController: UIColorPickerViewController) {
    
    let color = viewController.selectedColor
    detilesTextview.textColor = color
    labelColor = color
}

有几种方法可以做到这一点。首先看我对这个问题的回答将属性字符串保存到 Firestore https://stackoverflow.com/questions/61981000/can-you-save-attributed-strings-to-cloud-firestore/62008574#62008574在 Firestore 中查看它的完成情况。

这个答案适用于实时数据库,但概念是相似的。

将属性字符串从 textView 转换为 NSData,然后将其作为字符串存储在 Firebase 中。

Firebase 支持 NSString(Swift 中的 String),但仅支持实际的 UTF-8 字符,而不支持格式和样式。

因此,关键是将 textView 中的文本捕获为属性字符串,将其存档为 NSData(数据),然后将其文本版本(base64Encoded)保存在 Firebase 中。然后在回读时,做相反的事情。

以下是如何在 Firebase 中存储来自 sourceTextView 的文本

func saveAttrStringToFirebase() {
    let attrString = self.sourceTextView.attributedString()

    do {
        let data = try NSKeyedArchiver.archivedData(withRootObject: attrString, requiringSecureCoding: false)
        let dataString = data.base64EncodedString()

        let ref = self.ref.child("attributed_string") //self.ref points to my Firebase
        ref.setValue(dataString)
    } catch let err as NSError {
        print(err.localizedDescription)
    }
}

那么 Firebase 将看起来像这样

root
   attributed_string: "YnBsaXN0MDDUAQIDB..."

然后读回 attribute_string 处的值,它只是一个字符串。然后将其投射回数据并最后取消存档

func getAttrStringFromFirebase() {
    let ref = self.ref.child("attributed_string")
    ref.observeSingleEvent(of: .value, with: { snapshot in
        if let dataString = snapshot.value as? String {
            do {
                guard let data = Data(base64Encoded: dataString) else { return }
                guard let attrString = try NSKeyedUnarchiver.unarchivedObject(ofClass: NSAttributedString.self, from: data) else { return }

                self.destinationTextView.textStorage?.append(attrString)
            } catch let err as NSError {
                print(err.localizedDescription)
            }
        }
    })
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Firebase 中为 TextView Swift 保存字体和大小的方法是什么 的相关文章

随机推荐

  • 术语 SSTable 和 LSM Tree 之间有什么区别

    这两个术语可以互换使用吗 我读过有关 SSTable 工作原理的文章 通常文章都会开始提到 LSM Tree 然而 它们似乎是同一件事 我什么时候应该使用一个术语而不是另一个术语 对于凡人来说 SSTables 和 LSM Trees 的最
  • ffmpeg:音频样本的字节顺序

    我使用 ffmpeg 的 avcodec 从我的 C 应用程序中的音乐文件中检索原始音频样本 对于我测试的文件 这些文件样本的字节序似乎是小字节序 但我想知道对于我尝试解码的所有文件是否总是如此 即来自 ffmpeg 的实现或至少它的体系结
  • 什么时候应该使用 XML 而不是 SQL? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 ASP.NET MVC Linq To SQL 进行验证:如何避免编辑生成的源?

    我正在阅读一些关于验证的文档ASP NET MVC 忽略那些建议重新发明轮子编写自己的验证逻辑的人 大多数文章提倡使用xVal或数据注释验证器 两者都允许通过装饰模型的属性 进行声明性验证 我想我会去xVal 因为它似乎是最受建议的 因此
  • 如何使用Shopify API更改订单的付款状态?

    我正在为我自己的 Shopify 商店构建 iOS 应用程序 我创建了一个私有应用程序 并使用 API 密钥和密码来调用以下格式的 API https apikey password hostname admin resource json
  • 使用python shelve跨平台

    我希望得到关于 Python 中的书架 数据库的一些建议 问题 我在 Mac 上创建了一个数据库 我想在 Windows 7 上使用该数据库 我使用 Python 3 2 MacOS 10 7 和 win 7 当我在 Mac 上打开并保存我
  • pip 安装 MySQL-python

    我正在尝试在 Mac OS 上安装 MySQLdb for Python 当我数字pip install MySQL pythonshell 返回这样的内容 Collecting MySQL python Using cached http
  • XAML 网格可见性转换?

    我有一个网格 其可见性绑定到我的视图模型中的属性 这一切都工作正常 网格正确地出现 消失 我的问题是 如何应用过渡 以便网格内容滑入 UI 边缘 而不是立即从屏幕上消失 当它可见时 它应该再次滑出
  • swift 中闭包和函数作为参数的区别

    我有将近 4 年的 Objective C 经验 并且是 swift 的新手 我试图从 Objective C 的角度理解 swift 的概念 所以如果我错了 请指导我 在目标 c 中 我们有块 可以稍后异步执行的代码块 这绝对是完全合理的
  • 在工具栏下显示内容

    您好 我试图简单地将我的内容放在工具栏下方 但是当我运行我的应用程序时 某些内容本应位于工具栏下方 却隐藏在工具栏后面 我已经阅读了有关使用框架布局来尝试将其分离的内容 但我有点卡住了 我目前正在使用该软件提供的基本 android stu
  • Twig:如何获取字符串中的第一个字符

    我正在实施按字母顺序搜索 我们显示一个名称表 我只想突出显示那些名称以相应字母开头的字母 我被一个简单的问题难住了 如何读取 twig 中字符串 user name 的第一个字符 我尝试了多种策略 包括 0 操作 但它抛出异常 这是代码 f
  • Burn in WiX 3.6 如何将 MSI 文件捆绑到 .exe 中?

    我有兴趣了解 WiX 如何捆绑使用 Burn 创建的 EXE 文件 我知道创建一个自解压 EXE 文件非常简单 我已经完成了一百万次了WinRAR http en wikipedia org wiki WinRAR EXE 文件解压到哪个目
  • 使用 MemoryStream 创建 Open XML 电子表格时的 Excel 和“不可读内容”

    使用 Open XML SDK v2 0 创建 Excel 电子表格时 我们的 Excel 输出最初可以成功运行几个月 最近Excel 所有版本 开始抱怨 Excel在 zot xlsx 中发现不可读的内容 是否要恢复此工作簿的内容 我们正
  • 使用 React Native 的 FlatList 进行 Swiper

    我想让我的水平 FlatList 启用分页 向左或向右滚动 使内容始终位于屏幕中央 并且下一个和上一个内容仍然出现 Something like this for the horizontal actions But unfortunate
  • 直方图均衡结果

    I am trying to code histogram equalization by my self but the results are different from the built in function in matlab
  • 从 Angular-ui 引导日期选择器中删除周列和按钮

    我在用Angular UI Bootstrap 日期选择器 http angular ui github io bootstrap datepicker 现在我需要从日期选择器中删除 week 列和周按钮 我的应用程序的多种形式都使用了这个
  • 学习实体框架[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用全文搜索查找精确匹配

    使用 Sql Server 2008 如何使用全文搜索来实际找到精确的字符串匹配 我对此感到非常困难 而且我在网上找不到令人满意的解决方案 例如 如果我正在搜索字符串 Bojan Skrchevski 我希望第一个结果正是如此 到目前为止
  • 计算数字的二进制表示形式中 1 的数量的最佳方法。 (MIPS)

    我需要计算二进制数中 1 的数量 比如说 5 所以 00001001 将是 2 或 n 2 我正在使用 MIPS 最好的方法来做到这一点 最好的方法是count them 您可以检查是否设置了最低有效位 a1 by and用一个来代替它 如
  • 在 Firebase 中为 TextView Swift 保存字体和大小的方法是什么

    我想在 Firebase 中保存 Swift 中 TextView 的字体 大小和对齐方式 这样我就可以在另一个视图中调用它 我只能将颜色保存在 Firebase 中 这是显示我是如何做到的的代码 IBAction func SendBtn