我有以下代码:
public fun findSomeLikeThis(): ArrayList<T>? {
val result = Db4o.objectContainer()!!.queryByExample<T>(this as T) as Collection<T>
if (result == null) return null
return ArrayList(result)
}
如果我这样称呼:
var list : ArrayList<Person>? = p1.findSomeLikeThis()
for (p2 in list) {
p2.delete()
p2.commit()
}
它会给我错误:
For-loop range must have an 'iterator()' method
我错过了什么吗?
最佳答案
您的 ArrayList
是可为空的类型。所以,你必须解决这个问题。有几种选择:
for (p2 in list.orEmpty()) { ... }
或
list?.let {
for (p2 in it) {
}
}
或者你可以只返回一个空列表
public fun findSomeLikeThis(): List<T> //Do you need mutable ArrayList here?
= (Db4o.objectContainer()!!.queryByExample<T>(this as T) as Collection<T>)?.toList().orEmpty()
关于arrays - Kotlin:For 循环必须有一个迭代器方法——这是一个错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29201182/