web-dev-qa-db-fra.com

Lien facultatif pour Swift Combine.framework dans Xcode 11

Notre application prend en charge iOS 11 et supérieur. Dans iOS 13, nous utilisons SwiftUI + Combine

nous encapsulons l'importation du framework SwiftUI ou Combine avec la vérification correspondante #if canImport(SwiftUI) ou #if canImport(Combine). Si nous exécutons notre application à partir de Xcode 11 sous iOS 12, nous avons une erreur dyld: Library not loaded: /System/Library/Frameworks/Combine.framework/Combine

Nous avons résolu le même problème pour SwiftUI en le liant éventuellement.

enter image description here

Mais nous ne pouvons pas faire de même pour Combiner car il ne peut même pas être sélectionné pour la liaison

enter image description here

15
Igor Palaguta
  1. Accédez à l'onglet Phases de construction de vos paramètres cibles, développez Liez les binaires aux bibliothèques et faites un clic droit sur SwiftUI.framework , puis sélectionnez Afficher dans le Finder .
    Reveal SwiftUI.framework in Finder
  2. Faites glisser Combine.framework depuis la fenêtre du Finder et déposez-le dans la liste des frameworks, puis choisissez Facultatif dans la fenêtre d'état.
    Drag&Drop Combine.framework from Finder
  3. Sélectionnez l'élément Combine.framework dans l'Explorateur de projet (volet de droite) et choisissez Relatif au SDK dans la fenêtre Emplacement de l'inspecteur (volet gauche).
    Specify location relative to SDK
  4. Si vous obtenez un chemin relatif étrange (commençant par ../iPhoneOS.sdk/), puis ouvrez le projet dans un éditeur de texte et corrigez-le manuellement.
    Fix relative path in project file
1
znerol

Pour autant que nous l'avons compris aujourd'hui, il n'est pas nécessaire d'utiliser une solution de contournement si vous utilisez au moins Xcode 11.3.1 pour la construction. Cela fonctionne hors de la boîte même sans mentionner SwiftUI ou Combine dans toute phase de configuration/construction liée, etc.

Il s'avère être un bogue dans (au moins) Xcode-11.1, qui a eu pour résultat que le framework Combine n'est pas faiblement lié par défaut. Il semble que le bogue a été corrigé au moins dans Xcode-11.3.1 - il lie faiblement Combine par défaut. Certains rapports et réponses connexes de Apple sont ici: https://forums.Swift.org/t/why-Swift-package-manager-does-not-support- cadre-faible-cadre-faible-swiftui/31418/2

0
Grigory Entin