Help us understand the problem. What is going on with this article?

5. iOS(Swift4.0)用のECHONET Liteプロトコルライブラリ

More than 1 year has passed since last update.

 iOS用のECHONET Liteプロトコルライブラリを作ったので,その使い方を説明します。

  • Xcode 9.4.1 の情報に更新したよ。
  • 誤字脱字を修正したよ。

とりいそぎ,簡単にね。
ちなみにオープンソースでMITライセンスだよ。みんな安心。

内部はGCDAsyncUdpSocketに依存しています。
(GCDAsyncUdpSocketはPublic domainということになっているよ)

1. Xcode でProjectの準備

  • Xcode
  • File, New, Project
  • iOS, Single View Application, Next
  • Product Name: ELSwiftTest, Next

こんな感じ?

スクリーンショット 2017-08-21 12.00.40.png

  • (どこでもいーけど,今回は/DocumentsにXcodeというフォルダを作って選択してCreate)
  • File, Save
  • Xcode, Quit Xcode

2. Podfile準備

  • プロジェクトのフォルダがこんな感じになってるとして,

スクリーンショット 2017-08-21 12.09.07.png

  • スクショの位置(xcodeprojと同じ位置)にPodfileを新規に作成して
  • 下記をテキストでPodfileに記述
use_frameworks!

target 'ELSwiftTest' do
  pod 'ELSwift'
  pod 'CocoaAsyncSocket'
end
  • terminal開いて
$ cd ~/Documents/Xcode/ELSwiftTest/
$ pod setup
$ pod update
  • ELSwiftTest.xcworkspaceというファイルができているので,今後はこちらをつかって開発していく。

3. Demo作ってみる

具体的なXcodeとSwiftでのプログラミングは別の資料をみていただくとして・・・
こんな感じでGUIと,オブジェクトハンドルとの対応をつくって

スクリーンショット 2017-08-21 12.29.10.png

プログラムはこんな感じに修正.

import UIKit
import ELSwift

class ViewController: UIViewController {

    @IBOutlet weak var logView: UITextView!
    @IBOutlet weak var btnSearch: UIButton!
    let objectList:[String] = ["05ff01"]

    override func viewDidLoad() {
        super.viewDidLoad()
        logView.text = ""

        do {
            try ELSwift.initialize( objectList, { rinfo, els, err in
                if let error = err {
                    print (error)
                    return
                }

                if let elsv = els {
                    let seoj = elsv.SEOJ
                    let esv = elsv.ESV
                    let detail = elsv.DETAIL
                    self.logView.text = "ip:\(rinfo.address), seoj:\(seoj), esv:\(esv), datail:\(detail)" + "\n" + self.logView.text
                }
            }, 4)
        }catch let error{
            print( error )
        }

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func btnSearchDown(_ sender: Any) {
        ELSwift.search()
    }

}

もしかするとこのタイミングではimport文のところで

Cannot load underlying module for 'ELSwift'

というエラーが出てしまいますが、一旦「⌘+B」でコンパイルすると消えると思います。
もしかしたらwarningも下記のUDP関係でちょっとでます。多分平気,きになる人は直して。

Parameters of 'udpSocket(_:didReceive:fromAddress:withFilterContext:)' have different optionality than expected by protocol 'GCDAsyncUdpSocketDelegate'

4. 動かす。

シミュレータでの結果はこんな感じ。
通信するのでダイアログで警告でるけど許可してね。

Simulator Screen Shot 2017.08.21 12.41.10.png

5. SwiftとかXcodeとかが使いにくいことを再認識する。

ここ,つらいとこ

 6. よくあるエラーとその対策

ここもつらいとこ

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした