【问题标题】:Get indexOfObject method without using Foundation objects在不使用 Foundation 对象的情况下获取 indexOfObject 方法
【发布时间】:2016-08-13 08:30:05
【问题描述】:

通过选择 1st tableView row/section 我想检查所选项目是否已经在 2nd tableView 中?如果是,则找到该所选项目 indexOfObject 在第二个 tableView 中。

NSInteger sectionIndex = [[allSelectedProducts valueForKey:@"productID"] indexOfObject:[allProductData[indexPath.section] valueForKey:@"productID"]];

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

我想快速执行同样的任务,我怎样才能做到这一点!

在 Swift 中,我将 allSelectedProducts 用于第一个 tableView,allProductData 用于第二个 tableView,这两个数组都具有 Array<Dictionary<String, Any>> 类型

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

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

如果可以,那怎么办? 请指导我如何使用indexOfin swift

感谢任何帮助

【问题讨论】:

  • 我已经改进了您的问题,但仍然不是很清楚。不要犹豫,使用edit 按钮进一步改进它。另外,请避免使用 textspeak,Stack Overflow 不是聊天应用程序,请花点时间正确输入单词。谢谢。
  • 如果你已经在使用Arrays,那你为什么不想使用基础对象类型呢?
  • 不清楚是什么问题。既然知道indexOf,为什么不用呢?
  • @NRitH 我想以纯 swifty 的方式使用 swift 数组...
  • @matt 我不知道如何在 swift 中使用 indexOf...

标签: arrays swift


【解决方案1】:

大概是这样的:

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

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

【讨论】:

  • let index = allSelectedProducts.indexOf(searchedProductID)
  • @NRitH 我不这么认为,因为allSelectedProducts 拥有字典。更好的解决方案是将字典解析为对象并定义== 以使用productId
  • 哦,伙计;你说得对。那么let selectedProduct = allSelectedProducts[indexPath.section]; let index = allProductData.indexOf(product).
  • @Sulthan 它给了我Binary operator '==' cannot to applied to two 'Any?' operands
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
相关资源
最近更新 更多