The way I know I can view the automatically-translated Swift versions of Cocoa APIs is by command-clicking a Cocoa type in Xcode. For example, here's what is generated for UITableViewController:
class UITableViewController : UIViewController, UITableViewDelegate, NSObjectProtocol, UIScrollViewDelegate, UITableViewDataSource {
init(style: UITableViewStyle)
var tableView: UITableView!
var clearsSelectionOnViewWillAppear: Bool // defaults to YES. If YES, any selection is cleared in viewWillAppear:
var refreshControl: UIRefreshControl!
}
Is there an alternate way to make Xcode generate this Swift version? Preferably from the command line?
Yes, developers do need to perform work and creating a header file of the public interface it work. It is also documentation which I guess can also be skipped since it is work. The auto-created header file does no good for Swift classes using other Swift classes.
You need to quote the header file name when importing it in the bridging header. Like this: #import "UIImageView+WebCache.
It turns out the modern (non-"deprecated") REPL has a way of doing this too. Rather than :print_module
, you can use :type lookup
:
echo -e "import CoreGraphics\n:type lookup CoreGraphics" | swift
The Swift REPL includes a helper :print_decl <name> - print the AST representation of the named declarations
This blog post explains how you can write a simple script to help you use this to generate documentation for a specific type. I updated the script to allow using either OS X
#! /bin/sh
# usage: <shellscript> [--osx] typename
if [ "$1" = "--osx" ] ; then
echo "import Cocoa\n:print_decl $2" | xcrun swift -deprecated-integrated-repl
else
sdk_path=$(echo `xcrun --show-sdk-path` | sed 's#MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk#iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk#')
echo "import UIKit\n:print_decl $1" | xcrun swift -deprecated-integrated-repl -sdk "$sdk_path"
fi
Note 1: The script defaults to using the iOS SDK. If you want to use the OS X SDK use the "--osx" option as the first parameter
Note 2: I prefer to leave out the file output that is part of the blog post so that I can use this script in other ways than just file generation
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