Как использовать CPointer в Kotlin / Native - PullRequest
1 голос
/ 03 августа 2020

Не могу понять, как использовать CPointer в Kotlin / Native; В моем исходном наборе iOS мне нужно собрать Kotlin эквивалент следующего кода Object- c (включая только соответствующие части кода):

    //Object-C copyItemAtPath
    NSError* error=nil;
    [[NSFileManager defaultManager]copyItemAtPath:srcPath toPath:dstPath error:&error ];
    if (error!=nil) {
        NSLog(@"%@", error);
    }

Но в Kotlin / Native , Я не знаю, как преобразовать код; Я попробовал следующий код kotlin и не смог;

        //I try to read error info 
        val errorPtr = allocPointerTo<ObjCObjectVar<NSError?>>()
        NSFileManager.defaultManager.copyItemAtPath("source", target,errorPtr.value)
        Napier.e("[KNDraftCopy]${errorPtr.pointed?.value?.localizedDescription}")//null
        Napier.e("[KNDraftCopy]${errorPtr.pointed?.value}")//null
        Napier.e("[KNDraftCopy]${errorPtr.pointed}")//null
        Napier.e("[KNDraftCopy]${errorPtr}")//kotlinx.cinterop.NativePointed@d063d3a8

Я - код fi sh из C, это вопрос ко мне: Как преобразовать мой код Obj- C в kotlin / native? Правильный ли мой путь? (Результат недействителен.)

// the function definition
fun copyItemAtPath(srcPath: kotlin.String, toPath: kotlin.String, error:CPointer<ObjCObjectVar<platform.Foundation.NSError?>>?)
...