Skip to content

開発Tips

Takuma Homma edited this page Mar 4, 2017 · 3 revisions

開発時に躓いた箇所、役に立った情報をまとめるページです

storyboardからラベルなどをドラッグできなくなった

症状

storyboardからラベルやボタン等をドラッグしてもエラーになった

Could not insert new outlet connection: Could not find any information for the class and not showing any class named CalendarViewController

対処

参考ページ: Xcodeのストーリーボードでボタンをドラッグアンドドロップ出来ない問題 http://qiita.com/nagahori/items/71c1940319d35fa886f5

(xcodeのキャッシュが悪さをしていたっぽいので以下のコマンドで消した)

rm -rf ~/Library/Caches/com.apple.dt.Xcode
defaults delete com.apple.dt.Xcode IDEIndexDisable  
defaults write com.apple.dt.Xcode IDEIndexEnable 1

ViewControllerの関連付け

症状

ViewControllerを作成した際にstoryboardに関連付けできなくなった いつも通り以下の方法で実践しても動かなかった 【swift】複数のViewControllerを使う

対処

storyboardでtable view controllerを使っていたのが原因だった 作成したViewControllerでUITableViewControllerを継承すれば直った

Bitrise上でのschemeに関するwarningについて

問題

Xcodeのプロジェクトのビルド Scheme は、デフォルトではプロジェクトファイルに紐付いておらず バージョン管理ツールにコミットしても他のユーザに共有できなかった

対策

Project -> Scheme -> Manage Schemes...を選択し、対象のschemeにチェックを入れるとwarningが解消された

参考ページ

https://github.com/pepabo-mobile-app-training/turmeric/pull/11

ローカルではテストが通るけど、Bitrise CIで通らない

症状

  • ローカルでは何事もなく通るけれど、Bitriseでは通らない

対策

  • まずログ (raw-xcodebuild-output.log) を見る
    • bitriseページのBuild logの上にある
    • ひとまずローカルでのブランチ (及び内容)が一致していることを確認
  • clean buildのチェック
    • bitriseの設定より確認
  • 非同期処理を疑う

単体testで外部ライブラリが使えない

対策

  • プロジェクトファイルの設定からターゲットをTestsに切り替えてLink Binary With Librariesにライブラリを追加する

APIのテストがCI上で通らない

症状

  • apiのテストがCIで通らない、通信がうまくできてない?

対策

  • stubを使ってapiのモックを作る
    • OHHTTPStubsを併せて使うと作りやすい

UIテストでstubが使いたい

症状

  • 単体テストのようにsetUpメソッドに定義してもstubが使えない...

対策

  • AppDelegateにstubの処理を記述し、UIテストのアプリ起動時に環境変数から呼び出す(詳細)

Storyboard上に複数のviewを置きたい

やりたいこと

  • 1つのStoryboardに複数のviewを表示 (ここではcollectionViewとtableView)
  • 単一のViewVontrollerに、複数のViewに関するコードを詰め込むのはコードの管理上よろしくないと考えた
    • なのでControllerを分割する方向で、なおかつ1つのStoryboard上に複数Viewを表示させたかった

対策 (色々ありそう)

  • Container viewを使おう
    • Container viewを置くとそこの領域を別のviewControllerに持たせることが出来るゾ
  • (以下、やったことまとめ)
1. Container Viewを表示させたいStoryboard上に置く
2. デフォルトではUIViewが用意されてContainer viewにsegueで繋がれるので、
   他のものを使いたい場合は別のものを用意して、segueをつなぎ直す
3. つなぎ直した場合は、アクション(?)をembedにすると、そこに埋め込まれるようになるので、分割したいViewをそこに書いていく
4. 優勝

全体の表示

1 (calendar) : 1 (micropost)

カレンダーの表示比

1 (header) : 5 (calendar)

2016-09-29 12 22 28

データを永続化を考える際に良さそうなページ

【SWIFT 2.0】CORE DATA 入門、チュートリアル【図解】

実機にインストールできない時の対策

  1. XCode -> Preferences -> Accounts -> 該当のApple IDをクリック -> View Details... を見る

  2. 該当のProfilesをダウンロードしてDone

  3. buildする前にclean (command + shift + k) を行い、再度ビルド

それでも通らない場合は...

  • XCodeのプロジェクト設定を見よう
    • プロジェクトのターゲットでアプリを選択し、Generalタブを選択
    • Automatically manage signingをし直す
2016-10-07 16 23 07

mergepbx について

プロジェクトファイルのコンフリクトを解消してくれる有能なコマンドですが, この結果が正しいかどうかはこちらの意思に左右されるので, 結果は必ずしも正しいものであるとは言えません。 そのため, 開発時にあるコンポーネントが消えることも考えられますので, 気をつけながらレビューしましょう。

外部パッケージのビルドによってCIに時間がかかった

原因

carthageによって導入されたパッケージのビルドを毎回しているので、遅かった

対策

bitrise側でキャッシュを使うように設定した

  • carthageのステップ前にcache:pull, ステップ後にcache:pushで解決

Xcodeのテストが何事もなく終了する

  • ログ (UITestで落ちてる?)
All tests
Test Suite sunsetTests.xctest started
sunsetTests
    ✓ testExample (0.001 seconds)
    ◷ testPerformanceExample measured (0.000 seconds)
    ✓ testPerformanceExample (0.403 seconds)


	 Executed 2 tests, with 0 failures (0 unexpected) in 0.403 (0.405) seconds

isRetryOnFail=false, no more retry, stopping the test!
xcode test exit code: 65
xcode test failed, error: exit status 65

原因

  • UITestに何かを記述していたわけではないので、内容のエラーではない

対策

  • xcode testステップにてclean buildを毎回するように指定したらエラーがなくなった

Tips

Viewのマージン設定について

http://qiita.com/yimajo/items/10f16629200f1beb7852 http://blogios.stack3.net/archives/2334

ATSについて

http://hitoriblog.com/?p=41624 Apple 公式

WebViewのUIテストについて

http://stackoverflow.com/questions/32623869/testing-uiwebview-with-xcode-ui-testing

Swiftの基礎

http://swift-ios.keicode.com/

画面遷移時に値を渡す

http://qiita.com/senseiswift/items/20d09c523772caaf8005 http://qiita.com/moai_S2/items/e1cce9f3ff67fb897da5

アイコンの設定

http://swift-bettychang.hatenadiary.jp/entry/2016/01/05/185303

UITableViewがずれる

http://qiita.com/tomosooon/items/2c9725896803f090698d

変数の型を知りたい (デバッグ用)

type(of: 変数名)

iOSアプリでやってしまいがちなバグと対策

http://qiita.com/musclemikiya/items/5528c2d2418ebeade7b4

navigationbarを透過させたい

http://stackoverflow.com/questions/2315862/make-uinavigationbar-transparent

簡単なアプリアイコンの作り方 (イラレ不要)

http://qiita.com/seihmd/items/25f2a42e20e88ea5d86f

カレンダー

http://qiita.com/sakuran/items/3c2c9f22cbcbf4aff731

cellの大きさ変更

http://qiita.com/MilanistaDev/items/fbf5fb890d9a3a7180cd

プラグイン一覧

http://qiita.com/tattn/items/238b2b813be16f830bd4

ビルド時間の短縮

http://techblog.timers-inc.com/entry/2016/07/06/183632

ビュー自体の大きさを端末に合わせた比で表示

http://qiita.com/tmokita/items/abf8ec17469185de2d97

Food tracker

http://qiita.com/taji-taji/items/9202d944bf403957a22e

Clone this wiki locally