У меня есть приложение в AppStore, предназначенное для iOS 16 и более поздних версий. Я хотел бы представить поддержку SwiftData для устройств под управлением iOS 17 и более поздних версий, сохранив при этом поддержку iOS 16.
Пример кода:
import Foundation
import SwiftData
@available(iOS 17, *)
@Model
class Person {
var firstName: String
var lastName: String
init(firstName: String, lastName: String) {
self.firstName = firstName
self.lastName = lastName
}
}
Приложение аварийно завершает работу из-за @Model со следующей ошибкой:
dyld[5910]: Library not loaded: /System/Library/Frameworks/SwiftData.framework/SwiftData
Если я закомментирую @Model, приложение заработает без ошибок.
Я не могу отказаться от поддержки iOS 16, но мне нужно использовать SwiftData (а не CoreData) и ограничить функциональность устройствами iOS 17.
Ниже не работает:
#if canImport(SwiftData)
import SwiftData
#endif
Я бы подумал, что во время выполнения, когда он читает «@available(iOS 17, *)», он не продолжит то, что будет после него, поскольку он работает на iOS 16.
Вам следует сделать необязательной привязку SwiftData в разделе этапов сборки целевого приложения. Добавьте SwiftData.framework на этап «Связывание двоичного файла с библиотеками» и выберите «Необязательно» в столбце «Статус»,
Я не уверен, но при создании архива вы указали включение фреймворков?