【发布时间】:2019-01-20 03:03:00
【问题描述】:
只是后见之明,让您了解我的问题。我目前正在为我在设备上保存 GuestList CoreData 的事件编写 iOS 应用程序。
在 viewDidLoad 上,它将获取 coredata 对象并将其放入 [GuestDetails] 数组中
现在Guestdetail对象结构如下:
private(set) public var guestFirstName: String
private(set) public var guestLastName: String?
private(set) public var guestEmail: String?
private(set) public var guestPhone: String?
private(set) public var guestUUID: UUID
private(set) public var guestBarcode: String?
private(set) public var guestCheckedIn: Bool
只有名字、UUID 和 checkinStatus 是强制性的。我已经设置了通过 JSON 添加,但现在我的问题出在我的 GuestListViewController 上,我有一个搜索栏
我正在使用以下代码和数组来确保我可以过滤。 我有另一个名为
的数组searchResultArray = [GuestDetails]()
所以基本上我会将我所有的客人详细信息复制到 searchResultArray,这就是 tableView 从中获取其来源的那个。
现在作为搜索的一部分,我使用了在 appcoda 上找到的这段代码
searchResultArray = guestData.filter({guestData -> Bool in
(guestData.guestFirstName.lowercased().contains(searchText.lowercased())) ||
(guestData.guestLastName?.lowercased().contains(searchText.lowercased()))! ||
(guestData.guestBarcode?.contains(searchText))!
})
问题是我的应用程序崩溃了,如果我只按名字搜索它不会崩溃,因为它们被强制解包很好,但是如果我添加代码来搜索姓氏或条形码,它会崩溃。我知道这可能是因为明确解包,但 xcode 不允许我不解包。
- 我尝试过使用地图(这没有帮助,除非我对它不够熟悉),
我已经尝试过 .compact(但我无法让它工作,因为我不确定它如何访问 GuestDetail 对象的内部以删除 nil)
问题是 [GuestDetails] 的数组本身不会包含 null,GuestDetails 对象中的某些详细信息可能会导致它崩溃。
我的问题是,如何让它通过名字(已经可能)、姓氏和条形码进行搜索?
谢谢,我希望这个问题足够详细。
【问题讨论】:
标签: ios arrays swift core-data