1. AppConsole

  • It's an RPC Server written in Swift

Demo project

  • Install prerequisites using CocoaPods.
    AppConsole/Demo/ViewController $ pod install

Running the sample workspace on Xcode

  • Open and run AppConsole/Demo/ViewController/ViewController.xcworkspace
// part of ViewController.swift
class ViewController: UIViewController {
    @IBOutlet var label: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        label.text = AppConsole(initial: self).run()
    }

    ...
  • When running the project successfully, could get the output like this.
    AppConsole.swift #28 run AppConsole Server has started on http://localhost:8080

2. Swifter.jl

  • It's an RPC Client written in Julia

Install Julia

               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: http://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.4.5 (2016-03-18 00:58 UTC)
 _/ |\__'_|_|_|\__'_|  |  Official http://julialang.org/ release
|__/                   |  x86_64-apple-darwin13.4.0

julia>

Install Swifter.jl

julia> Pkg.add("Swifter")

Initial

  • Inital connect to the endpoint.
julia> using Swifter

julia> vc = initial("http://localhost:8080")
<ViewController.ViewController: 0x7f8dda71e4a0>

Query

  • Query getter, setter expressions using @query macro.
julia> @query vc.view
<UIView: 0x7f8dda68fde0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x7f8dda690160>>
  • Query mode (> key) for REPL
julia> @query vc.view
<UIView: 0x7f8dda68fde0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x7f8dda690160>>

Swifter> vc.view
<UIView: 0x7f8dda68fde0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x7f8dda690160>>

IJulia

  • Swifter.jl supports Jupyter mime types.
  • To run the Jupyter interactive environment, install IJulia.
    julia> Pkg.add("IJulia")
    julia> using IJulia
    julia> notebook()

In [3]:
using Swifter

vc = initial("http://localhost:8080")

@query vc.label.text = "Hello World"
@query vc.view


Out[3]:
<UIView: 0x7fbbca4b0220; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x7fbbca4009c0>>