首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在内部类型中实现SWIFT5.1集合的差异

在内部类型中实现SWIFT5.1集合的差异
EN

Stack Overflow用户
提问于 2019-10-14 10:01:27
回答 1查看 383关注 0票数 8

我正在构建一个iOS应用程序,在TableViewController中显示远程iBeacons。

为了提高性能和测试新的SWIFT5.1扩散特性,我编写了以下代码:

代码语言:javascript
复制
private func updateBeacons(_ rangedBeacons: [CLBeacon]) {
    guard beacons != rangedBeacons else { return }

    let difference = rangedBeacons.difference(from: beacons)
    // Also tried:
    // let difference = rangedBeacons.difference(from: beacons, by: { $0.uuid == $1.uuid })

    // ...
}

到达此代码时,将引发fatalError

/BuildRoot/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-1100.2.259.70/swift/stdlib/public/core/ArrayBuffer.swift,致命错误:不支持:文件

第231行

如何在CLBeacons上执行集合差异?

引用的代码可以在这里找到:https://github.com/apple/swift/blob/master/stdlib/public/core/ArrayBuffer.swift#L226-L232

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-30 02:16:22

我也遇到了这个问题,但在我的例子中,我从一个核心数据NSFetchedResultsController中获得了一个数组。我怀疑这与原始数组来自目标C的事实有关。

我能够通过将数组包装到一个新的Array中来修复这个问题:

代码语言:javascript
复制
private func updateBeacons(_ rangedBeacons: [CLBeacon]) {
    guard beacons != rangedBeacons else { return }

    let difference = Array(rangedBeacons).difference(from: Array(beacons))

    // ...
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58374395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档