不使用Foundation对象获取indexOfObject方法

3
通过选择第一个tableView的行/部分,我希望检查所选项目是否已在第二个tableView中?如果是,则在第二个tableView中找到该选定项的indexOfObject。
NSInteger sectionIndex = [[allSelectedProducts valueForKey:@"productID"] indexOfObject:[allProductData[indexPath.section] valueForKey:@"productID"]];

这将返回在allSelectedProducts中所选对象的索引,返回其对应数组值等于给定对象的最低索引。

我希望在Swift中执行相同的任务,我该如何实现!

在Swift中,我使用了类型为Array<Dictionary<String, Any>>的数组allSelectedProducts用于第一个tableView和数组allProductData用于第二个tableView

我想执行此任务而不使用Foundation类,我们可以在Swift中使用arrayindexOf来执行相同的任务吗?

let productIndex = allSelectedProducts.indexOf(<#T##predicate: ([String : Any]) throws -> Bool##([String : Any]) throws -> Bool#>)

如果可以的话,那么怎样做呢? 请指导我如何在Swift中使用indexOf函数。 提前感谢您的任何帮助。

3
我已经改进了你的问题,但它仍然不是很清楚。请不要犹豫使用 [编辑] 按钮进一步完善它。另外,请避免使用文本语言,Stack Overflow 不是聊天应用程序,请花时间正确地输入单词。谢谢。 - Eric Aya
如果您已经在使用Array,那么为什么不想使用基础对象类型呢? - NRitH
1
不清楚问题是什么。既然你知道indexOf,为什么不使用它呢? - matt
2
@NRitH 我想以纯 Swift 的方式使用数组... - Aakash Brahmbhatt
@matt 我不知道如何在Swift中使用indexOf... - Aakash Brahmbhatt
显示剩余4条评论
1个回答

0

可能是这样的:

let searchedProductID = allProductData[indexPath.section]["productID"]
let index = allSelectedProducts.indexOf { $0["productID"] == searchedProductID }

这是您原始代码的直接翻译


let index = allSelectedProducts.indexOf(searchedProductID) - NRitH
@NRitH 我不这么认为,因为allSelectedProducts保存的是字典。更好的解决方案是将字典解析为对象,并定义==使用productId - Sulthan
哦,伙计,你说得对。那么 let selectedProduct = allSelectedProducts[indexPath.section]; let index = allProductData.indexOf(product) - NRitH
2
@Sulthan,它给我返回了“无法将二个'Any?'操作数应用于二进制运算符'=='”的错误。 - Aakash Brahmbhatt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接