Is there any way in Xcode 8 or 8.1 to do a Swift 2.X -> Swift 3 migration for a single file in a project that's already been converted to Swift 3?
For technical debt/legacy build process reasons, we are currently having to maintain both Xcode 7 and Xcode 8 versions of our project. This is causing headaches when we have to merge new development from Xcode 7 over to Xcode 8. Since the project has already been fully converted to Swift 3 in our Xcode 8 branch (including a ton of hand fixes), we can't use the full-project automated converter. Therefore we are currently having to do a hand conversion from Swift 2.2 to Swift 3 for any new Swift files which were added in Xcode 7, which takes a significant amount of time.
I apologize if this has already been asked, I couldn't find any clear answer with Google.
I have a project with multiple targets where each target is a slightly more advanced version of using OpenGL with Swift. It's one project with multiple tutorials, if you will. When swift 3 became available, I used the converter, and noticed it works on a per target basis. With that in mind I suggest:
I realize it's a bit of a hack, but if it works, why not? Hope that helps.
As a side note, if you have any code dealing with Unsafe[Mutable]Pointer and you utilize alloc() or malloc(), the converter does not replace the alloc()/malloc() with the new UnsafeMutablePointer methods--allocate() and initialize(). You are likely using these if you are working with any of the C API's.
A thought (untested) is to delete the lines
LastSwiftMigration = 0800;
and/or
SWIFT_VERSION = 3.0;
from project.pbxproj and see if Xcode allows you to use the migrator again. Those lines were both added after I ran the migrator.
Then if it works, obviously, you need to deselect all the files you don't want migrated.
That's all I can think of anyway.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With