在 Swift 中迭代 JavaUtilList

Posted

技术标签:

【中文标题】在 Swift 中迭代 JavaUtilList【英文标题】:Iterate over a JavaUtilList in Swift 【发布时间】:2015-04-16 08:38:02 【问题描述】:

我有一个用 J2Objc 翻译的列表:

var userDtoIds:JavaUtilList = // some list

现在我想用for in 循环遍历这个列表。我试过了:

for iten in userDtoIds 
 

错误:类型“JavaUtilList”不符合协议“SequenceType”

与:

 let arr:iosObjectArray = userDtoIds.toArray()
 for iten in arr       
 

我收到错误:类型“IOSObjectArray”不符合协议“SequenceType”

它的唯一工作方式是:

for var i:Int32=0; i < userDtoIds.size(); i++ 

我可以使用 for in 循环来迭代 JavaUtilList 吗?

编辑:

以下代码导致运行时错误:

var list = userDtoIds as! NSArray
for item:String in list as! [String] 

【问题讨论】:

您需要将 userDtoIds 转换为 AnyObject 或 NSArray ,请遵循此type-anyobject-does-not-conform-to-protocol-sequencetype @pawan 你能发表一个答案吗?我不知道怎么做。该链接对我没有帮助。 【参考方案1】:
extension IOSObjectArray: Sequence 
   func makeIterator() -> Iterator 
       // Create iterator
   

Here is a wonderful article on conforming custom collection types, even if you are using j2objc.

【讨论】:

以上是关于在 Swift 中迭代 JavaUtilList的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Swift 中的过滤器会迭代集合两次?

在 Swift 3 中沿字典进行迭代

Swift函数式编程十(迭代器和序列)

Swift函数式编程十(迭代器和序列)

Swift函数式编程十(迭代器和序列)

在嵌套的孩子内部迭代。 Firebase 和 Swift 3