Добавить и получить доступ к файлу необработанных двоичных двоичных объектов в проекте iOS

Как добавить двоичный файл / файл blob с некоторыми двоичными данными (не исполняемыми, не изображениями, не аудио, просто необработанными двоичными данными) в проект iOS, а затем получить к нему доступ в приложении как Data или же uint8 массив?

Я пытался искать термины: встроенный двоичный файл (получил только ответы о исполняемых файлах), встроенный большой двоичный объект (но нашел только ответы о больших двоичных объектах SQLite)

2 ответа

Решение

Добавьте файл в структуру вашего проекта (первая вкладка левой панели), используя перетаскивание или щелкнув правой кнопкой мыши папку -> "Добавить файлы в..."

После этого файл должен автоматически встраиваться в ваше приложение. Вы можете проверить, перейдя в настройки своего проекта (нажмите на первый синий значок в структуре проекта), затем в разделе TARGETS выберите свое приложение и перейдите на вкладку "Build Phases". Там вы должны увидеть фазу "Копирование комплекта ресурсов". Убедитесь, что ваш файл является его частью, а если нет, добавьте его кнопкой +.

Тогда внутри вашего приложения это действительно просто. Если ваш файл называется foo.xyzтогда делай

func loadFile() -> Data?
{
    guard let fileURL = Bundle.main.url(forResource: "foo", withExtension: "xyz") else {
        print("Failed to create URL for file.")
        return nil
    }
    do {
        let data = try Data(contentsOf: fileURL)
        return data
    }
    catch {
        print("Error opening file: \(error)")
        return nil
    }
}

Добавить файл просто - просто щелкните правой кнопкой мыши группу, в которую вы хотите добавить его, выберите Add files to xxx и выберите свой файл. Убедитесь, что цель вашего приложения выбрана (вероятно, это будет по умолчанию), чтобы она была добавлена ​​в этот пакет.

Доступ к этому двоичному файлу также довольно прост:

guard
    let url = Bundle.main.url(forResource: "Filename", withExtension: "bin")
    let data = Data(contentsOf: url) else {
        print("Well, that didn't work")
}

print("Look - data: \(data)")
Другие вопросы по тегам