このエントリーをはてなブックマークに追加
swift

読了: 約 8 分

iOSアプリ開発のためにSwiftをしようしている初学者に向けての記事を追記しながら書いていきます。
Swiftやってみての所感は、とにかく検索コストが高すぎる。
なので、エラーリンクや、開発環境の設定、オススメライブラリなど定期的に諸々メモしていく場所を創っておきます。

環境設定

Xcode6.3
Swift1.2

Swiftの肝であるoptional value

nil を変数に入れられないので? !で特別な変数であることを知らせる

optional valueは変数の後につける
var str:string? = nil
var str:string? = “av”

var ansInt:Int = 0
var opInt:Int? = nil

if let tmpInt = opInt
// 変数名がnilじゃないとき
ansInt = opInt!
else
// 変数名がnilのとき
ansInt = -1

var opInt:Int? = nil
var ansInt:Int = opInt ?? -1

classプロトコル周り

class クラス名: 親クラス、プロトコル名、プロトコル名
プロトコル=約束事をまとめたもの

– タイマーを止める
https://sites.google.com/a/gclue.jp/swift-docs/ni-yinki100-ios/2-utility/taimawo-zhimeru

timer. invalidate()

写真アプリの開発したいときの考え方

AV Foundationはカメラロールなどをカスタマイズしたい複雑なUI設計のときに向いている

・AV Foundationをimportしてカメラが対応しているかチェック
・AV CaptureSession = 撮影した写真をsessionに保存
AVCaptureDevice = デバイスの有無判定
AVCaptureStillImageOutput = 現在のimageをoutputする

▽全画面表示
スクリーンサイズ取得
https://sites.google.com/a/gclue.jp/swift-docs/ni-yinki100-ios/2-utility/012-hua-miansaizuwo-qu-desuru

CGRectの使い方
http://qiita.com/u651601f/items/bbc0e3dd561c35507963

▽参考記事
http://qiita.com/ottati/items/a25da15955f00c5c70e9

▽Webviewしたいとき
http://kzy52.com/entry/2015/02/20/000838

▽モーダルの切り替え
http://tech.eversense.co.jp/159

▽dismissViewControllerAnimatedがエラーを起こした場合
http://qiita.com/keisukeohta/items/4c7b001379212f5eb28c

▽神のドキュメントサイト
https://sites.google.com/a/gclue.jp/swift-docs/ni-yinki100-ios/11-corebluetooth/cao-zuoapuri

Todoアプリ開発のときの考え方

– segue 画面遷移を作るために使用
viewcontrollerを2つ以上用意して、classでつなぐ
http://qiita.com/tajihiro/items/45c7adf2ef15df79bbf1

– tableview

– 入力のバリデーション
https://sites.google.com/a/gclue.jp/swift-docs/ni-yinki100-ios/uikit/041-uitextfieldni-wen-zi-shu-zhi-xianwo-shekeru

NSUserdefaultsを使用してデータを保存する

NSManagedObjectContext周りでエラーが起きてわからない
CoreData: error: -addPersistentStoreWithType:SQLite configuration:(null)

http://qiita.com/rizumita/items/3129b18bb65fb72c2cbb

coredata

http://qiita.com/yukihamada/items/61ab1299d99fabdb9469

dataの永続化

http://wonderpla.net/blog/engineer/Swift_DataPersistence/

NSUserDefaults を使ってのデータ永続化について

http://swift-salaryman.com/nsuserdefaults.php

Todoアプリの基本的な設計

最初にAPI叩く、その後、jsonで取得して、collectionに保存
collectionを呼び出して、タップした記事のURLを取得
webview.loadRequestにrequest urlを投げる

非同期処理
コレクション作成 – データ保持用

http://qiita.com/yuch_i/items/fbb970b1131b8a25b690

// tableviewのcellの調整

http://selection9.blogspot.jp/2014/09/uitableviewself-sizing-cellsios8-swift.html

constrainsの設定周り
UILableのlineを0に設定しておかないと、1行になってしまうので注意が必要

Coredataを使ってTodoアプリを開発したいときの考え方

coredataによるtodoアプリ開発
http://tsuchikazu.net/swift_namespace/

json ライブラリを使った newsアプリ開発

[!] Pods written in Swift can only be integrated as frameworks; this feature is still in beta. Add `use_frameworks!` to your Podfile or target to opt into using it

use_frameworks!をpodfileに追記しないとエラーが起きる

historynavigationのviewcontroller

https://github.com/szk-atmosphere/SAHistoryNavigationViewController

ライブラリがない問題
link binary with libraries にlibpods.a設定

http://qiita.com/dkwnm/items/ce4b711d258bc814f9a9

ライブラリの追加方法
http://techacademy.jp/magazine/2703

プッシュとか会員登録周り

Facebookが買収したParseを使用して、開発するのが効率的。
Twitter,Facebook認証なども備えられているので、非常に便利でサーバーサイドの知識が少なくても
割と工数をかけずに開発可能

parse

https://www.parse.com

https://parse.com/tutorials/push-notifications

//////

parseのinstall

http://dev.classmethod.jp/smartphone/iphone/newer-podspec-of-parse/

boltsのエラーっぽいけどfacebook sdkが更新されてからだめらしい
extern NSString *const BFTaskMultipleExceptionsException;

http://hmcreation.net/?p=169

ネットワーク系のログとかその辺を監視したりする
pod ‘AFNetworking’
pod ‘AFNetworkActivityLogger’

JSONを扱うときの資料

swiftyjsonのチュートリアルとか基本的な使い方・公式サイト

http://qiita.com/yukihamada/items/9b0067f905418105a2c6

https://github.com/SwiftyJSON/SwiftyJSON

http://www.binpress.com/tutorial/swiftyjson-how-to-handle-json-in-swift/111

// classメソッド

classをインスタンス化しなくても、直接呼び出せるメソッドのこと
プロパティを操作しないメソッドに使用する

// as ~ down キャスティング、 upキャスティング
継承元の型を調べないとエラーが起きる

初学者はライブラリ入れるときにめちゃくちゃ困った

bridgingheader fileの設定まわり
objective-cで作成されたライブラリを入れたいときに記述する必要がある。

http://qiita.com/konomi_rose/items/6c0d2795227124653a0e

ライブラリを入れる際のよくあるエラー

大抵ライブラリがないときに怒られるか、settingしてないから怒られる

http://d.hatena.ne.jp/bi_na/20111121/1321855527
http://d.hatena.ne.jp/goodbyegirl1974/20120920/1348106337

clang: error: linker command failed with exit code 1 (use -v to see invocation)

http://stackoverflow.com/questions/8852249/mbprogresshud-armv7-error

could not build Objective-C module ~

swiftでobj-cのライブラリを読み込むとき
Bridging Headerを作成して、moduleを作る

http://tech.admax.ninja/2014/09/26/about-bridging-header/

◆ 根本原因として、git cloneとかでファイル落としてきても、
xcodeにコピーしてファイルとして認識させないとmoduleとして使えない。
importする必要なし。
importしている人はなんでimportされるのか。

pod installした後にheaderフォルダーが生成されるので、
build settingでheaderフォルダを指定する設定を行う。
→ プロジェクトに.hのheaderファイルを置かなくて済むのでファイルは読みやすい

ライブラリを使用するための簡単な流れ

・brinding headerにimportしたいライブラリを記述
・cocoapodsでinstallしたいライブラリを記述
・pod installして、workspaceの方で開く
・productからbuildする

スマートなライブラリの管理の仕方はあまりネットに落ちてないので、
headersのpathを指定すると良いと思います。

よく使うライブラリ

api client周り
http://qiita.com/hideji2/items/14c065d6f00cbf5bf194

・AFNetworking
・SwiftyJson
・Alamofire
・BFTask
・Parse
・SVWebview
・PageMenu

他チュートリアルなど開発中なので、定期的に更新していきます。
YoutubeにあるSwift系の開発映像が、Xcodeの効率的な使い方とかもたまに教えてくれるので、
その辺もザッピングすると効率良い開発ができるかと思います。

SNSでもご購読できます。

運営メディア

男性向けお役立ちメディア Coolhomme
就職・転職、エンジニア転職向け求人サイト Rplay
'