Importing Net-based SwiftPM packages to your Xcode Playground — Erica Sadun - Slsolutech Best IT Related Website, pub-5682244022170090, DIRECT, f08c47fec0942fa0

Importing Net-based SwiftPM packages to your Xcode Playground — Erica Sadun

Spread the love

I’ve been kicking the wheels on Xcode 12 and its means to make use of frameworks and packages with playgrounds. Up till now, I’ve solely been in a position to import packages which can be both downloaded or developed regionally on my residence system. Nevertheless, a number of the packages I need to work with are hosted from GitHub.

I made a decision to observe a hunch and see if I may import my dependency by way of a neighborhood Forwarding bundle after which use that code. Lengthy story brief: I may.

Right here’s my playground, efficiently working.

The RuntimeImplementation is said in a GitHub-hosted bundle known as Swift-Common-Utility:

What I did to make this work was that I created what I known as a Forwarding Utility, whose sole job is to create a shell bundle that is dependent upon the distant bundle and forwards it to the playground. It appears like this. It’s a single file known as “Forwarding.swift” (no, the identify is in no way magic.) in Sources/. I take advantage of @_exported to ahead the import.

 Use this to ahead web-based dependencies to Swift Pkg

@_exported import GeneralUtility

Its Package deal.swift installs the dependency:

    dependencies: [ .package(url: "", .exact("0.0.4")), ],
    targets: [
            name: "ForwardingUtility",
            dependencies: [ .product(name: "GeneralUtility"), ],
            path: "Sources/"

And that’s just about all that there’s to it, aside from (as I discussed in my different submit about use SwiftPM packages in playground workspaces) that you’ll have to stop and re-open the primary beta earlier than you’ll be able to import the forwarding.

Let me know something that I tousled. But additionally let me know if this was useful to you!

Leave a Reply

Your email address will not be published. Required fields are marked *