All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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