我知道我可能做錯了,但我有點堅持在這個函式中回傳正確的型別。
val dbFields = dbInfo.equipmentList
fun DbEquipmentWithMediaList.toApiUpdateDeviceList(): ApiUpdateDeviceList {
val newUpdate: ApiUpdateDeviceList
newUpdate = dbFields.forEach { ApiUpdateDeviceList(
deviceEquipmentId = it.sSEquipmentDbInfo.deviceEquipmentId,
secondaryDeviceId = it.sSEquipmentDbInfo.secondaryDeviceId,
deviceInstanceId = it.sSEquipmentDbInfo.deviceInstanceId.toString(),
deviceSerialNumber = it.sSEquipmentDbInfo.deviceSerialNumber,
devicePartNumber = it.sSEquipmentDbInfo.devicePartNumber,
deviceManufacturerName = it.sSEquipmentDbInfo.deviceManufacturer,
deviceInstallationDate = DateUtil.dateToStringUTCSiteSurvey(it.sSEquipmentDbInfo.deviceInstallationDate),
deviceLocation = it.sSEquipmentDbInfo.locationInfo,
deviceTechnicianNotes = it.sSEquipmentDbInfo.deviceTechnicianNotes
)
}
}
我需要在 forEach 回圈之后將該函式作為 ApiUpdateDeviceList 回傳。任何幫助表示贊賞,謝謝。
這是有關 DbEquipmentWithMediaList 類和 ApiUpdateDeviceList 兩個類的更多資訊
對于 DbEquipmentWithMediaList
data class DbEquipmentWithMediaList(
@Embedded val sSEquipmentDbInfo: SSEquipmentDbInfo,
@Relation(
parentColumn = "id",
entityColumn = "media_id",
entity = SurveySiteDbMedia::class
)
val mediaList: List<SurveySiteDbMedia>
)
data class SSEquipmentDbInfo(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id") val id: Long,
@ColumnInfo(name = "equipment_id", index = true) val equipmentId: Long,
@ColumnInfo(name = "actual_device_equipmentId") val deviceEquipmentId: Int?,
@ColumnInfo(name = "secondary_device_id") val secondaryDeviceId: Int,
@ColumnInfo(name = "secondary_device_checked_status") val secondaryDeviceCheckedStatus: Int?,
@ColumnInfo(name = "device_instance_id") val deviceInstanceId: Int?,
@ColumnInfo(name = "media_names_list") val mediaNames: List<String>? = null,
@ColumnInfo(name = "device_serial_number") var deviceSerialNumber: String? = null,
@ColumnInfo(name = "device_part_number") var devicePartNumber: String? = null,
@ColumnInfo(name = "device_manufacturer") var deviceManufacturer: String? = null,
@ColumnInfo(name = "device_installation_date") var deviceInstallationDate: Date? = null,
@ColumnInfo(name = "location") var locationInfo: String? = null,
@ColumnInfo(name = "device_technician_notes") var deviceTechnicianNotes: String? = null,
@ColumnInfo(name = "image_start_count") val imageStartCount: Int?,
@ColumnInfo(name = "video_start_count") val videoStartCount: Int?,
@ColumnInfo(name = "device_equipment_id") val deviceEquipmentMediaId: Int? = 0,
@ColumnInfo(name = "device_update_mode") val isDeviceUpdateMode: Boolean
)
對于 ApiUpdateDeviceList
data class ApiUpdateDeviceList(
@SerializedName("DeviceEquipmentId") val deviceEquipmentId: Int?,
@SerializedName("DeviceId") val secondaryDeviceId: Int?,
@SerializedName("DeviceInstance") val deviceInstanceId: String?,
@SerializedName("SerialNumber") val deviceSerialNumber: String?,
@SerializedName("PartNumber") val devicePartNumber: String?,
@SerializedName("ManufacturerName") val deviceManufacturerName: String?,
@SerializedName("InstallationDate") val deviceInstallationDate: String?,
@SerializedName("Location") val deviceLocation: String?,
@SerializedName("TechnicianNotes") val deviceTechnicianNotes: String?
)
uj5u.com熱心網友回復:
所以,我會重命名這個類,讓它的名字中沒有 List,因為它只代表一個專案:
ApiUpdateDeviceList -> ApiUpdateDevice
由于這是一個一對多的關系,你從這個擴展函式回傳的型別應該是List<ApiUpdateDevice>.
我實際上會首先將一對一的關系分解為它自己的擴展函式,使用with范圍函式來簡化代碼:
fun SurveySiteDbMedia.toApiUpdateDevice(): ApiUpdateDevice = with(sSEquipmentDbInfo) {
ApiUpdateDevice(
deviceEquipmentId = deviceEquipmentId,
secondaryDeviceId = secondaryDeviceId,
deviceInstanceId = deviceInstanceId.toString(),
deviceSerialNumber = deviceSerialNumber,
devicePartNumber = devicePartNumber,
deviceManufacturerName = deviceManufacturer,
deviceInstallationDate = DateUtil.dateToStringUTCSiteSurvey(deviceInstallationDate),
deviceLocation = locationInfo,
deviceTechnicianNotes = deviceTechnicianNotes
)
}
您可以使用該map函式而不是forEach從另一個串列中生成一個串列。所以我們用它和上面的函式來簡潔地創建你的串列轉換:
fun DbEquipmentWithMediaList.toApiUpdateDeviceList(): List<ApiUpdateDevice> =
dbFields.map { it.toApiUpdateDevice() }
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/525757.html
標籤:安卓算法科特林
