持久化 UINib 数组
persist array of UINib
我有一个问题,我在那里找不到任何信息...问题是我有一个自定义 UINib 数组,在我将它们创建为 CustomTableViewCell 之后,每个 UINib 都有其标准 Class。
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 不满意
这些 Nibs 每个都代表 UITableView 中的一个单元格,在用户能够按照自己的喜好移动单元格之后,顺序当然应该在重新打开应用程序后保持不变。
因此,如果我做对了,我只需要保留 IndexPath,但我找不到任何有用的信息...
我希望我能在这里找到帮助 - 请注意我刚刚开始 Swift 和 iOS 开发,也许我尝试的东西根本不可能 - 也许你有一个快速提示,一些教程、片段、书籍或一些想法或任何方向的东西。我愿意学习,也许我只是解释错了
会很好!多谢!
您已经发现存储 UINib
个实例的数组是不可能的。这是因为这样做没有意义。笔尖是 视图层 的实现细节。你保存的东西属于模型层,它应该独立于视图层。您应该能够获取模型层的代码,无需更改即可将其放入桌面应用程序、Web 应用程序甚至 Android 应用程序中。如果它引用任何 iOS-Specific 视图 类,例如 UINib
.
,这当然是不可能的
您可以做的最简单的事情就是让您的模型成为一个字符串数组。这些字符串可能是您的笔尖名称。这将很容易序列化,并且在实例化 table 视图单元格时也很容易使用。
我有一个问题,我在那里找不到任何信息...问题是我有一个自定义 UINib 数组,在我将它们创建为 CustomTableViewCell 之后,每个 UINib 都有其标准 Class。
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 不满意
这些 Nibs 每个都代表 UITableView 中的一个单元格,在用户能够按照自己的喜好移动单元格之后,顺序当然应该在重新打开应用程序后保持不变。 因此,如果我做对了,我只需要保留 IndexPath,但我找不到任何有用的信息...
我希望我能在这里找到帮助 - 请注意我刚刚开始 Swift 和 iOS 开发,也许我尝试的东西根本不可能 - 也许你有一个快速提示,一些教程、片段、书籍或一些想法或任何方向的东西。我愿意学习,也许我只是解释错了 会很好!多谢!
您已经发现存储 UINib
个实例的数组是不可能的。这是因为这样做没有意义。笔尖是 视图层 的实现细节。你保存的东西属于模型层,它应该独立于视图层。您应该能够获取模型层的代码,无需更改即可将其放入桌面应用程序、Web 应用程序甚至 Android 应用程序中。如果它引用任何 iOS-Specific 视图 类,例如 UINib
.
您可以做的最简单的事情就是让您的模型成为一个字符串数组。这些字符串可能是您的笔尖名称。这将很容易序列化,并且在实例化 table 视图单元格时也很容易使用。