Kotlin 在函数中返回流类型时应为元素错误
我正在尝试使用以下方法从bd或服务器获取基于连接的结果,但预期会出现元素错误 我已经尝试获取调用API并在房间中存储数据,然后更新UI 按照这种方法,我过去常常解决问题,但运气不佳Kotlin 在函数中返回流类型时应为元素错误,kotlin,Kotlin,我正在尝试使用以下方法从bd或服务器获取基于连接的结果,但预期会出现元素错误 我已经尝试获取调用API并在房间中存储数据,然后更新UI 按照这种方法,我过去常常解决问题,但运气不佳 * Used for get User data */ @UseExperimental(ObsoleteCoroutinesApi::class, ExperimentalCoroutinesApi::class) @Throws(APIFailureException::cla
* Used for get User data
*/
@UseExperimental(ObsoleteCoroutinesApi::class, ExperimentalCoroutinesApi::class)
@Throws(APIFailureException::class)
override fun getUserData(userId: String): Flow<UserData> {
return flow<UserData> {
supervisorScope {
val userCount = userDataDao.getUserCount()
val dbJob = async {
val userData: Observable<UserDataEntity> = userDataDao.getUserData()
val iterator = userData.openSubscription().iterator()
while (isActive && iterator.hasNext()) {
val next = iterator.next()?.toDomainModel()
if (next != null) {
emit(next)
}
}
}
val cm =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val apiJob = if (cm.activeNetworkInfo.isConnected) { //Check for network
async {
try {
val responseUserData =
userServices.getUserDetail(userId, true).handledResponse()?.data
if (responseUserData != null) {
saveUserData(responseUserData.toDomainModel())
responseUserData.groupRole?.let { groupRole ->
saveGroupRole(groupRole.toDomainMode())
}
saveTeamInspectionTypes(responseUserData.teamInspectionTypes.toDomainModels())
} else {
throw APIFailureException("Unable to parse Userdata")
}
} catch (e: APIFailureException) {
if (userCount <= 1) {
throw e
} else {
logger.error(e) { "Unable to update from network" }
}
}
}
} else if (userCount <= 1) {
throw NoSuchElementException("Unable to get data and no backup")
} else null
apiJob?.await() // Do not pass this line until the api job is finished (or if it is null)
dbJob.await()
}
}
}
"e: D:\ARNextGenWorkSpace\ar-mobile-next\repository\src\main\java\com\arinspect\repository\UserRepositoryImpl.kt: (73, 9): Expecting an element
e: D:\ARNextGenWorkSpace\ar-mobile-next\repository\src\main\java\com\arinspect\repository\UserRepositoryImpl.kt: (76, 17): Expecting an element
e: D:\ARNextGenWorkSpace\ar-mobile-next\repository\src\main\java\com\arinspect\repository\UserRepositoryImpl.kt: (78, 17): Expecting an element
e: D:\ARNextGenWorkSpace\ar-mobile-next\repository\src\main\java\com\arinspect\repository\UserRepositoryImpl.kt: (89, 17): Expecting an element
e: D:\ARNextGenWorkSpace\ar-mobile-next\repository\src\main\java\com\arinspect\repository\UserRepositoryImpl.kt: (117, 17): Expecting an element"