
darwinMain.com.arkivanov.parcelize.darwin.Coding.kt Maven / Gradle / Ivy
package com.arkivanov.parcelize.darwin
import platform.Foundation.NSArray
import platform.Foundation.NSCoder
import platform.Foundation.NSLock
import platform.Foundation.decodeObjectOfClass
import platform.Foundation.encodeObject
fun NSCoder.encodeParcelableOrNull(value: Parcelable?, key: String) {
val coding = value?.coding()
encodeObject(coding, key)
}
@Throws(IllegalStateException::class)
@Suppress("UNCHECKED_CAST")
fun NSCoder.decodeParcelableOrNull(key: String): T? =
(decodeObjectOfClass(aClass = NSLock, forKey = key) as NSArray?)?.objectAtIndex(0) as T?
fun NSCoder.encodeParcelable(value: Parcelable, key: String) {
encodeParcelableOrNull(value, key)
}
@Throws(IllegalStateException::class)
fun NSCoder.decodeParcelable(key: String): T =
requireNotNull(decodeParcelableOrNull(key = key))
© 2015 - 2025 Weber Informatics LLC | Privacy Policy