ios - 持久化 UINib 数组

标签 ios arrays swift indexpath uinib

我有一个问题,我找不到任何信息...问题是我有一个自定义 UINib 数组,在我将它们创建为 CustomTableViewCell 后,每个 UINib 都有自己的标准类。

import UIKit

class TestCell1: UITableViewCell {

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}
}

在这个数组中,我存储了 3 个 UINib,它们是 TableViewCell,我想在拖放它们后保留它们的重新排序。

我现在已经创建了一个全局数组,我的所有 ViewController 都可以访问它。

class Test {
static var globalArray: [UINib] = [UINib(nibName: "ToDoCell", bundle: nil)]}

在 viewDidLoad 下我尝试过这样的事情:

    Test.globalArray.append(test1Nib)
    Test.globalArray.append(test2Nib)
    Test.globalArray.append(test3Nib)
    Test.globalArray.append(test4Nib)

我现在很难在数组中保留它们的顺序。我尝试过 Realm、Core Data 和 UserDefaults,但找不到任何解决方案。但我猜问题是他们对 UINibs 不满意

这些 Nib 每个代表 UITableView 中的一个 Cell,并且在用户能够按照自己的喜好移动 Cell 后,重新打开应用程序后,顺序当然应该保持不变。 因此,如果我做对了,我只需要保留 IndexPath,但我找不到任何有用的信息......

我希望我能在这里找到帮助 - 请注意,我刚刚开始 Swift 和 iOS 开发,也许我尝试的根本不可能 - 也许你有一个快速提示,一些教程,片段,书籍或一些想法或任何方向的东西。我愿意学习,也许我只是理解错误 会很好!多谢!

最佳答案

您已经发现存储 UINib 实例数组是不可能的。这是因为这样做没有意义。 nib 是 View 层的实现细节。您保存的内容属于模型层,它应该独立于 View 层。您应该能够获取模型层的代码并将其不加更改地放入桌面应用程序、Web 应用程序甚至 Android 应用程序中。如果它引用任何特定于 iOS 的 View 类(例如 UINib),这当然是不可能的。

您可以做的最简单的事情就是使模型成为字符串数组。这些字符串可能是您的 Nib 名称。这将很容易序列化,并且在实例化表格 View 单元格时也很容易使用。

关于ios - 持久化 UINib 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49617887/

相关文章:

ios - 如何将Alfresco集成到我的ios应用程序?

javascript - 如果重复则从数组中删除两个值 - JavaScript/jQuery

arrays - 在 Matlab 中构建图像数组

ios - 如何向 PhoneNumberTextField 中的文本和占位符添加插图

ios - RxSwift - 可观察的自定义类

ios - 使用固定的 "Header"在 UITableView 上滚动单元格

ios - 如何保存结果集并在 TableView 中显示所有数据

ios - 如何使用 Xcode 4.3 或 Application Loader 将应用程序提交到 App Store

arrays - 如何过滤掉数组的数组

ios - iPhone 拒绝了发布请求。内部启动错误: process launch failed: Unspecified