Просто позвоните учащемуся, который содержит имя UnsafePointer.
let stu = student(id: 1, name: input?.cString(using: .utf8), percentage: 10.0)
passByStudent(stu)
Попробуйте этот пример:
Мой C. c
#include <stdio.h>
void changeInput(int *output) {
*output = 5;
}
typedef struct student Student ;
void passByStudent(Student stu);
struct student {
int id;
const char *name;
float percentage;
};
void passByStudent(Student stu) {
stu.id = 5;
}
ViewController.swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var output: CInt = 0
changeInput(&output)
print("output: \(output)")
let input: String? = "strudent name"
let stu = student(id: 1, name: input?.cString(using: .utf8), percentage: 10.0)
passByStudent(stu)
}
}
Следуйте этому примеру шаг за шагом:
Создание проекта Swift
Создайте файл My C. c и введите код.
Нажмите на свой проект. Нажмите на вкладку Build Setting. Выберите все вкладки Поиск с Objective- c Заголовок моста Дважды щелкните здесь. После этого щелкните левой кнопкой мыши на файле My C. c и перетащите его внутрь всплывающего слоя.
Вы можете определить свою функцию в Practice-Bridging-Header.h
void changeInput (int * output);
Введите код внутри вашего ViewController.
Код:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var output: CInt = 0
changeInput(&output)
print("output: \(output)")
let input: String? = "strudent name"
let stu = student(id: 1, name: input?.cString(using: .utf8), percentage: 10.0)
passByStudent(stu)
}
}