Ios 如何在[Any]()数组中查找项的索引?

Ios 如何在[Any]()数组中查找项的索引?,ios,swift,Ios,Swift,我想找到一个对象用户(在本例中是一个类)的索引 items.indexOf(myUserInstance)引发错误(无法将“User”类型的值转换为预期的参数类型“@noescape(Any)throws->Bool) items.indexOf(myUserInstance作为?Any)也会抛出一个错误 是否有一个简单的扩展允许我使用indexOf?现在,我正在循环每个项,输入casting,并检查ID属性是否等于…//我们可以像这样检索索引 var items = [Any]() 我可以试

我想找到一个对象
用户
(在本例中是一个类)的索引

items.indexOf(myUserInstance)
引发错误(无法将“User”类型的值转换为预期的参数类型“@noescape(Any)throws->Bool)

items.indexOf(myUserInstance作为?Any)
也会抛出一个错误


是否有一个简单的扩展允许我使用
indexOf
?现在,我正在循环每个项,输入casting,并检查ID属性是否等于…

//我们可以像这样检索索引

var items = [Any]()
我可以试试这样的东西

(items as! NSArray).indexOfObject(user)

也许这是一种更优雅的写作方式,但这就是我到目前为止所得到的一切

关于
items.indexOf{$0as?User==User}

这将返回一个可选值,其中包含
用户
对象在数组中的第一个索引,或者如果用户不在集合中,则返回
nil
.None


如果您的
User
类是从
NSObject
派生的,并且它覆盖了
isEqual:
方法,那么您可以使用
=
操作符而不是
==
来查找内容相等的对象
=
将在后台调用
isEqual:
方法,而不是像
==

那样比较指针,为什么不将User-like
数组设为var-items=[User]()
,因为我希望数组是[Any]()。有时,我把
User
放在里面,有时我把结构放在里面,等等。
[AnyObjects]()
不允许我在里面附加结构。检查这个@originaluser2我不确定那是什么-所以可能不是。它只是一个普通类,不返回可选的。如果项目不在内部,如何使其返回nil?然后使用(项目as!NSArray)。containsObject(用户)它返回Bool值强制展开很少是一个好主意,应该避免。我想检查确切的实例。这不只是检查类型吗?哦,我以前犯了一个错误,你可以尝试我的更新方法。我认为这会起作用,但是如果(u==user)不是
{
确定它是同一个对象实例吗?@而且我想,在这种情况下可能更正确。这是在线性时间内运行的吗?我正在尝试将它与一个精确的实例匹配。这是否与实例或类匹配?@TIMEX很抱歉,我没有捕捉到,我想你想在容器中找到第一个
用户
对象。我更新了我的答案以反映您的疑问。
    items.indexOf { x in
        if let u = x as? User {
            if(u === user){
               return true;
            }
        }

        return false
    }