How Do You Debug Swift PlaygroundBook? - ios

While I'm exploring Playground Book sample code, like this one, I find it to be very tedious to get the code to run because of Playground Book's limitations in where the code can run: only on iPad's Swift Playground.
There is no way to debug the "Sources" / Auxiliary code in iOS's Swift Playground, since all the source files are shown in un-editable plain text. You have to open the source files in Xcode to edit them, but then you can't compile or run them!
This is especially tedious for the sample code above, which uses PlaygroundValue, a persistence API that requires Playground Book format, so I still couldn't get the code to run by separating all source code into a separate Playground file to run on the Mac.
Since the sample code above is outdated, I find it to be near impossible to debug it right and get the code to run. You'd have to:
Deploy the code on iPad. Run the Book.
See many error messages on iPad.
Go back to Xcode on Mac and debug them one by one, manually.
Deploy the code on iPad again to run. Repeat the process.
Even after all the errors are resolved, you can still be faced with cryptic "Problem Running Playground" without any further concrete explanation.
What's your workflow to productively debug and deploy code with Playground Book? Current workflow seems impractical to me I think there must be a better way, but I'm not familiar enough with Playground Book and my online research doesn't yield any reasonable workarounds.

From a bug report / suggestion I sent to Apple, I got the following reply:
We’ve actually built tools to help debug the auxilliary sources and we did a presentation at WWDC 2018 that demonstrates it. Please view the presentation and get access to the tools here: https://developer.apple.com/videos/play/wwdc2018/413/
Upon further research, I found that they have recently released a Playgrounds Author Template:
The Swift Playgrounds Author Template is a starter Xcode project that will help you create, debug, and produce a Playground book. Using the template you can step through the code for your live view as if it were an app so that you can identify bugs more easily and develop an efficient workflow for developing your Playground books.
This template, requiring Swift 4.1 to run, includes three different targets:
PlaygroundBook
Book_Sources
LiveViewTestApp
You can use the LiveViewTestApp to fully debug your Playground Book right on your Mac with Xcode.

I am not aware of any possibility that does not require you to test the Playground on an actual iPad.
Anyway, you can make developing Swift Playgrounds less tedious by
Using iCloud to synchronize your mac version with the iPad.
Embedding your Playground in an Xcode project as described in one of my previous answers. That way, you can at least achieve autocompletion during development.
Linking your source files to another target, so that compile errors can be caught before running the Playground.
Anyway, you will still encounter mysterious "Problem Running Playground" errors from time to time

Related

Transferring Xcode Project from one computer to another brings random errors?

I have a Xcode project I got from another developer. Initially when I opened it it has a bunch of errors (most of which were un-updated frameworks). I got it to work after a while and I fixed it. I want pass it back to the manager since I'm leaving uni in a few months. I copied it over to my friends Mac to see what would happen if I just took the project and all it's folders and made it a zipfile. It didn't work for some reason. It gave me an error:
error: using bridging headers with framework targets is unsupported
But why did that come up? I mean it's the same code on the slightly different versions of Xcode (13.1 versos 14.1) but I doubt there was a massive change between the two that would cause this. I want to be able to pass these app later in the future without having to care about this stuff. I made a GitHub (link below) would cloning that work? Also the laptop I chose was just a fresh reset. Would it be due to not having coco-pods installed?
I feel like I could go through and fix it all on that laptop and document that but then I'm afraid that every time I put it on a new one it would come up with random errors every single time making my documentation moot.
https://github.com/AbdullahMSaid/SonicExperiment-Works
With big help this was Fixed.
Things that fixed it.
Having the correct version of Xcode
Turning everything from absolute path to relative
Lots of other code fixes. But those are my project specific.
You don't need bridging headers in framework. Use should have something like "YourFramework.h" where you can import your .h files.

Using Pages in iPad Playgrounds

The documentation mentions:
add pages to your playground to help organize your code.
But I’m unable to access a class from a different Page. I tried setting everything public, and even creating the class in the Sources folder by starting the playground in Xcode but it crashes on launch with Problem Running Playground
I would really appreciate some help. I’m trying to use Playgrounds more, but don’t want to have all my classes & extensions in one Page.

Why am I getting an unavailable declaration using framework

I'm making a swift .framework, but I'm running into what I believe is a build problem. So I've simplified everything to isolate my troubles. I've attached a screenshot of my newframework.framework project (top) and my example usage of the framework (bottom). The problem I'm having is that Whatever class is unavailable when I include newframework.framework. I can confirm that Whatever.swift is indeed included in target>>buildphases>>compile Sources
What could cause this not to work?
EDIT - Adding App Build phases screenshot
Your problem, as we figured out in comments, was that you were building your framework for "Generic iOS Device" and building your app for the simulator. Xcode can't make the app build without matching architectures, so you need to choose one over the other or produce a framework that includes every architecture.
(This was posted to help people who come here from the future find the answer quickly. Hello, future people!)

AppCode + swift - no code completion and no quick documentation

Do anyone know how to enable code completion and quick documentation in AppCode(3.1.1) for swift?
I have updated Xcode I've downloaded documentation in Xcode preferences.
I set correct path to Xcode in my AppCode but still I got no support in AppCode regarding to completion and quick documentation.
This support is in XCode but I am java dev so for me better thing is to use Jetbrains tool instead of using Apple one.
Project that I've opened in AppCode was created in XCode.
I've downloaded this documentation in XCode.
I've searched a lot in the net but there are only slogans about features of AppCode
can do that this, is doing this and that
Only one thing related to path to XCode I found in this property
but none of those I can see... I believe that I haven't enabled it yet.
For me AppCode is more user friently tool because like I said I am used to Intellij for Java development and I am trying to use this tool because it is quicker for me to work with sth that I've used to than sth that is completly new for me(conceptually - XCode).
Do you have any advices about that?
I asked my quesetion to AppCode support. They responded:
Rafal, Your configuration seems correct. Please see comments
below: 1) regarding code completion in Swift - we have part of work
done in that area, and part of tasks still in progress. Can you share
a code snippet where you experience issues with completion? 2)
regarding quick documentation - this feature is not yet ready for
Swift. You can track its progress here.
This mean that I can not expect from AppCode features that was advertised in terms of swift language.

OpenGL ES Programming Guide Particles example

I am trying to make the particle system example given in the book OpenGL ES programming guide to compile in iOS 6 but I don't seem to be able to make it work. For reference here is the web site of the book:
http://www.opengles-book.com/
The code can be downloaded from Google Code, see instructions below:
http://code.google.com/p/opengles-book-samples/wiki/Instructions
The code is in chapter 13.
Has anyone came across this and were able to make it work in iOS 6? I had made some modifications but still no joy.
Follow these steps:
Open "Common.xcodeproj" located in "/opengles-book-samples/iPhone/Common/"
Select to build for device or simulator and build.
After Build Succeeded close the Common.xcodeproj.
Open Finder and from the menu Go>Go to Folder... type without quotes "~/Library/Developer/Xcode/DerivedData/" and find the folder called "Common-bkoronpjvpvwbxgdgxbwiukcqwaz" inside folder go to : /Build/Products/ and copy "libCommon.a" to ParticleSystem project.
Build&Run particle example.
That's it. :)
Good luck.

Resources