読了: 約 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 クラス名: 親クラス、プロトコル名、プロトコル名
プロトコル=約束事をまとめたもの
– タイマーを止める
timer. invalidate()
写真アプリの開発したいときの考え方
AV Foundationはカメラロールなどをカスタマイズしたい複雑なUI設計のときに向いている
・AV Foundationをimportしてカメラが対応しているかチェック
・AV CaptureSession = 撮影した写真をsessionに保存
AVCaptureDevice = デバイスの有無判定
AVCaptureStillImageOutput = 現在のimageをoutputする
▽全画面表示
スクリーンサイズ取得
CGRectの使い方
CGRectを元にカスタマイズCGRectを生成 – Qiita
1. 値の再代入禁止について
Objective-Cから関数型のSwiftに変わり、Optional型ではない変数の再代入が禁止されました。
例えばStructで宣言した変数も基本的に再代入は禁止です。(ただし、mutating…
▽参考記事
【iOS】【Swift】写真をその場で撮ったり選択したりする – Qiita
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerD…
▽Webviewしたいとき
iOS – Swift で WebViewアプリを作ってみた – kzy52’s blog
▽モーダルの切り替え
http://tech.eversense.co.jp/159
▽dismissViewControllerAnimatedがエラーを起こした場合
http://qiita.com/keisukeohta/items/4c7b001379212f5eb28c
▽神のドキュメントサイト
Todoアプリ開発のときの考え方
– segue 画面遷移を作るために使用
viewcontrollerを2つ以上用意して、classでつなぐ
Swiftでセグエを利用した画面遷移 – Qiita
概要
画面遷移はアプリとして基本的な動作なのに、頭の中でちょっと整理できていないので覚え書き。
ファイル構成
まずは、ファイル構成。UIViewControllerを継承した FirstViewController Sec…
– tableview
– 入力のバリデーション
NSUserdefaultsを使用してデータを保存する
NSManagedObjectContext周りでエラーが起きてわからない
CoreData: error: -addPersistentStoreWithType:SQLite configuration:(null)
SwiftでNSManagedObjectのサブクラスを作成してフェッチする方法(Beta5で) – Qiita
モデルでのクラス名の設定
xcdatamodeldでエンティティのクラス名にモジュール名のプレフィックスを付ける必要があります。アプリ名がMyApp、Entity名がPersonだとするとクラス名はMyApp.Personと設定…
coredata
SwiftでCoreDataを使うときのメモ – Qiita
いろいろ記述に迷ったのでメモメモ
// CoreDataの取得
var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegat…
dataの永続化
ワンダープラネット株式会社(WonderPlanet Inc.)
NSUserDefaults を使ってのデータ永続化について
NSUserDefaultを利用した中年データ永続保存 – Swiftサラリーマン
Todoアプリの基本的な設計
最初にAPI叩く、その後、jsonで取得して、collectionに保存
collectionを呼び出して、タップした記事のURLを取得
webview.loadRequestにrequest urlを投げる
非同期処理
コレクション作成 – データ保持用
iOS/Android対応 Boltsを使って非同期処理を統一的に書く – Qiita
Bolts Framework とは
昨年Facebookに買収されて話題になったParseチームが開発しているiOS/Androidフレームワーク。
Bolts自体はParseとは独立しているため、ParseのBaaSを使って…
// tableviewのcellの調整
UITableViewのセルの高さを動的に計算するSelf-Sizing Cellsを試してみた(iOS8, Swift)
constrainsの設定周り
UILableのlineを0に設定しておかないと、1行になってしまうので注意が必要
Coredataを使ってTodoアプリを開発したいときの考え方
coredataによるtodoアプリ開発
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
ライブラリがない問題
link binary with libraries にlibpods.a設定
libPods.aのビルド手順 – Qiita
ビルド手順
以下、Xcod…
ライブラリの追加方法
Xcodeでフレームワークを追加する方法【初心者向け】
プッシュとか会員登録周り
Facebookが買収したParseを使用して、開発するのが効率的。
Twitter,Facebook認証なども備えられているので、非常に便利でサーバーサイドの知識が少なくても
割と工数をかけずに開発可能
parse
Parse Platform
Parse Platform
//////
parseのinstall
Parseのpodは 一番公式っぽい “Parse” を使おう | DevelopersIO
boltsのエラーっぽいけどfacebook sdkが更新されてからだめらしい
extern NSString *const BFTaskMultipleExceptionsException;
http://hmcreation.net/?p=169
ネットワーク系のログとかその辺を監視したりする
pod ‘AFNetworking’
pod ‘AFNetworkActivityLogger’
JSONを扱うときの資料
swiftyjsonのチュートリアルとか基本的な使い方・公式サイト
Swiftで面倒なJSONの取り扱いを10倍便利にするSwiftyJSON – Qiita
https://github.com/lingoer/SwiftyJSON
上記を読んでしまえば一瞬なんですが、一応使い方をこちらにもそのまま書いておきます。
JSONの取り扱いって面倒ですよね?
[
…
GitHub – SwiftyJSON/SwiftyJSON: The better way to deal with JSON data in Swift.
// classメソッド
classをインスタンス化しなくても、直接呼び出せるメソッドのこと
プロパティを操作しないメソッドに使用する
// as ~ down キャスティング、 upキャスティング
継承元の型を調べないとエラーが起きる
初学者はライブラリ入れるときにめちゃくちゃ困った
bridgingheader fileの設定まわり
objective-cで作成されたライブラリを入れたいときに記述する必要がある。
Swift:CocoaPodsでObjective-Cのライブラリをインストールする方法 – Qiita
http://kazuy.net/?p=266 を参考に、CocoaPodsでライブラリをインストールする。
(1で作ったプロジェクトと同じディレクトリに)
swiftなので、Podは必ず最…
ライブラリを入れる際のよくあるエラー
大抵ライブラリがないときに怒られるか、settingしてないから怒られる
_OBJC_CLASS_$_ referenced from というエラー – bi_naの日記
「clang: error: linker command failed with exit code 1」というエラーへの対処 – Action Script書きの日記
clang: error: linker command failed with exit code 1 (use -v to see invocation)
MBProgressHUD armv7 error
-(IBAction)submitForm:(id)sender{
MBProgressHUD …
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周り
SwiftでAlamofireとAFNetworkingの使い方を比較してみる – Qiita
それぞ、https://itunes.apple.com/search?term=apple&…
・AFNetworking
・SwiftyJson
・Alamofire
・BFTask
・Parse
・SVWebview
・PageMenu
他チュートリアルなど開発中なので、定期的に更新していきます。
YoutubeにあるSwift系の開発映像が、Xcodeの効率的な使い方とかもたまに教えてくれるので、
その辺もザッピングすると効率良い開発ができるかと思います。