gpt4 book ai didi

ios - 几次滚动后 CollectionView 在 NSISEngine 中崩溃

转载 作者:搜寻专家 更新时间:2023-11-01 06:52:43 25 4
gpt4 key购买 nike

我有一个具有水平流布局的 Collection View 。滚动大约 4 到 5 个单元格后,代码崩溃并显示一条 SIGABRT 错误消息,我在网上其他任何地方都找不到。

void _removeFromEngineVarTable(NSISEngineVar)() 中的断言失败,/BuildRoot/Library/Caches/com.apple.xbs/Sources/Foundation/Foundation-1562/Foundation/Layout.subproj/IncrementalSimplex/NSISEngine.m:1518

这是 cellForItem 的代码:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "listingCell", for: indexPath) as? ListingCollectionViewCell {
cell.listing = listings[indexPath.item]

cell.segmentedControl.removeAllSegments()
cell.listing.termContracts.forEach {
var title = ""

switch $0.availableFor {
case "Fall": title = "Fa"
case "Fall/Winter": title = "Fw"
case "Winter": title = "Wi"
case "Spring": title = "Sp"
case "Spring/Summer": title = "Ss"
case "Summer": title = "Su"
case "Year Round": title = "Year"
default: title = ""
}

cell.segmentedControl.insertSegment(withTitle: title, at: cell.segmentedControl.numberOfSegments, animated: false)
}

cell.contactLabel.text = cell.listing.contactPhone
cell.contactPersonLabel.text = cell.listing.contactPerson
cell.addressLabel.text = cell.listing.address

//Default data to first contract
if cell.listing.termContracts.isEmpty {
cell.rentLabel.text = "N/A"
cell.sharedPrivateLabel.text = ""
} else {
if let rent = cell.listing.termContracts[0].rent {
cell.rentLabel.text = rent == 0 ? "Free" : "$\(rent)/mo"
}
if let sharedPrivate = cell.listing.termContracts[0].sharedPrivate {
cell.sharedPrivateLabel.text = sharedPrivate
}
}

cell.segmentedControl.selectedSegmentIndex = 0
return cell
}

return UICollectionViewCell()
}

问题出在这一行:

if let rent = cell.listing.termContracts[0].rent {
cell.rentLabel.text = rent == 0 ? "Free" : "$\(rent)/mo"
}

当我将其替换为

if let rent = cell.listing.termContracts[0].rent {
cell.rentLabel.text = rent == 0 ? "Free" : "$\(cell.listing.termContracts[0].rent)"
}

它工作得很好。但是因为租金是可选的,所以当它呈现出来时我得到了丑陋的“Optional(___)”。这是一个错误??我看不出任何东西会坏掉的原因,因为我正在安全地处理所有事情。我也看不出出租和直接出租之间有任何根本区别。

当我滚动到特定索引时, Collection View 也会崩溃,这让我认为这是一个可重用的问题?

编辑:IB 详细信息

enter image description here

enter image description here

最佳答案

您遇到了自动布局问题。 NSISEngine 是自动布局“求解器”。您还没有描述您的界面,所以不可能提供更精确的帮助,但是在您的自动布局约束中一定有一些困难或耗时的事情要解决(可能是不平等?降低优先级?),这可能是对 rentLabel 的约束 或与之相关的东西(或 rentLabel 的布局决定属性)。

从简化这个标签的布局开始,即使这给出了“错误”的界面,看看你是否可以解决这个问题。如果可以,请尝试以更有效的方式恢复约束。

关于ios - 几次滚动后 CollectionView 在 NSISEngine 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56027014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com