Swiftでの配列(Array)同士を繋げ方
配列同士を繋げる
- Swiftでは配列と配列を繋げるには「+」でできる
var array1 = Array<String>() array1.append("Swift1") array1.append("Swift2") // array1 = ["Swift1","Swift2"] var array2 = Array<String>() array2.append("Kotlin1") array2.append("Kotlin2") // array2 = ["Kotlin1", "Kotlin2"] // array1 と array2 を繋げる let array3 = array1 + array2 array3.forEach{ word in print(word) }
出力結果
- 個人的に迷ったのでメモ
Material-components-iOSでiPhoneにマテリアルデザインを組み込む[Swift]
使ってみてよかったので共有する 今回使用するファイルはこちら https://github.com/material-components/material-components-ios
インストール
Githubの手順通りに進めていく
- cocoapodsのインストール(インストール済みの場合はスキップ)
sudo gem install cocoapods
- podファイル作成(作成済みの場合はスキップ)
pod init
- podファイルに下記を追加
pod 'MaterialComponents'
- コンポーネントのインストール
pod install
使ってみる
Raised button
storybordにボタンを追加してclassを「MDCButton」にする
すると、マテリアルボタンができる
Floating action button
これも同じ手順で下記を「MDCFloatingButton」を設定する
すると、Floating Buttonが作成できる
ボタンの色や、背景色を変更する場合は下記のコードを追加
- 文字色の変更
materialButton.setTitleColor(UIColor.white, for: .normal)
- 背景変更
materialButton.setBackgroundColor(UIColor.blue, for: .normal)
Material dialog
- podファイルに下記を追加する
pod 'MaterialComponents/Dialogs'
- インストールする
pod install
- ダイアログを出したいときに下記のコードを追加する
let alertController = MDCAlertController(title: "Material Dialog", message: "This is Material Dialog! Let's Start Now!") let action = MDCAlertAction(title:"OK") alertController.addAction(action) present(alertController, animated:true)
すると、ダイアログが出る
他にもいろんなcomponentが用意されているのでぜひ使ってみてください https://material.io/components/ios/
Swiftでの画面遷移についてまとめ
よく忘れるのでメモとしてまとめる
Storybordだけで画面遷移
シンプルな画面遷移。 ボタンと次に表示するViewControllerをsegueで繋げるだけで完了
コードから画面遷移
画面遷移したいタイミングで下記のコードを追加する
let storyboard = self.storyboard! let nextView = storyboard.instantiateViewController(withIdentifier: "viewcontroller2") self.present(nextView, animated: true, completion: nil)
withIdentifierにはViewControllerのIdentifyで設定した名前を書く
NavigationControllerで画面遷移
NavigationControllerを下記の手順で追加する
Editor → Embed In → NavigationController
追加したらStoryBoardだけで画面遷移で書いたのと同じようにsegueでViewController同士をつなげれば完了
NavigationControllerを使ってコードで画面遷移
方法1 performSegueを使う
①遷移元のViewControllerの黄色のボタンから遷移先のViewControllerへドラッグ&ドロップしてsegueで繋げる
②segueを選択し、Identifierを設定する
③画面遷移させたいときに下記のコードを追加する
performSegue(withIdentifier: "Test", sender: nil)
この方法は遷移するViewControllerが2個程度と少ない場合に使っている
方法2 PushViewControllerを使う
let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "Test") as! SecoundViewController self.navigationController?.pushViewController(secondViewController, animated: true)
Testの箇所には遷移先のStoryboardIdに設定した値を入力
SecoundViewControllerは遷移先Storybordに設定したViewControlerを書く
ちなみに、コードで戻る時は下記のコードでできる
_ = navigationController?.popViewController(animated: false)
この方法はnavigationControllerを配列にして管理することができるので 一気に2個戻るというようなことも簡単です。
他にも画面遷移する方法はたくさんありますが、自分がよく使うものをメモとして残しておきます。
「kotlin & Android Studio3.0」に参加してきました!
参加してきました。
https://japan-android-group.connpass.com/event/61779/
発表テーマで個人的に気になったとこを書いていきます。
広く浅く語るkolinの魅力
Extension
kotlinでは既存のクラスを変更せずにメソッドや、プロパティを追加するExtensionという機能があります。
package com.mrstar.android_with_kotlin // 略 import com.mrstar.extensions.findById // <- 注目 public class MainActivity() : FragmentActivity() { protected override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val imageView: ImageView = findById (R.id.image_view) // <- 注目 // 略 } }
Qiitaで同じことをまとめていたのでそのまま転用します。
詳しくは下記をごらんください。 http://qiita.com/RyotaMurohoshi/items/4b958af1d23da6d91a61
これは個人的に知らなかったです。 Javaでは書けない機能で便利だなあと思いました。
kotlin界隈の未来
「kotlinに対する過度な期待から導入を試みる企業が増えるかもしれないが、Javaとの互換が聞かなかったりして失敗することもあるかもしれない」
とのことおっしゃっていました。
確かに現在(2017/07/24)はGoogleがkotlinを発表し、世の中kotlinブームが巻き起こっていますが結局の新しいコードの書き方に対応できず読みづらいコードになる可能性もあります。
ですが、
「ブームから、定番になっていくと思う」
ともおっしゃっていました。
これからJavaがkotlinに置き代わり、基幹システムにも採用されたりする定番の言語になる日もそう遠くないかも???
Android Studio 3.0 と kotlinについて
Android Studio 3.0 から繋いでる端末内部のデータがみれるようになる
これは正直驚きました、、、、 SharedPreferencesに保存されているデータをれるようになるのはデバックしやすいな〜と思いました。
SQLiteで保存したデータも覗くことができるのですかね〜
kotlinのit文について
newArticle.setOnClickListener { it -> print("kotlin") }
暗黙すぎるので分からなくなる可能性がありそうですが、慣れればいい感じですね
kotlinのコンパイルについて
kotlinのコンパイルはそれなりにはやいみたいです。 そもそもSwiftがとても遅いようです、、、 自分はiOSとAndroid両方書くのでこれからkotlin導入したらコンパイルはええーーーってなるのですかね?
kotlinの良くないところ
kotlinのよくないところも紹介されていました - 暗黙が多すぎること - Javaは型を書くことが必須なので型情報があるので便利
プラットホーム型について ~Kotlinだって間違えるとnullでハマるよ!~
基本的には Javaの変数や、メソッドをkotlinから呼ぶとNullPointerExceptionになる可能性があるよ!! とのことでした。
例
public String javaMethod(){ if(isValid()){ return //なんか返す }else{ return null; } }
上記のメソッドをkotlinで読んだ時
var javaClass = JavaClass() //普通だったら「?」をつけなければいけない箇所だが、つけなくてもコンパイルエラーにならない var javaMethod = javaClass.javaMethod
FRESH! Kotlin Style Guideline
社内でkotlinを使う際のコード規約などの紹介でした。
個人的に印象に残ったのは
!!は使わない
Swift書いている時に!でアンラップしたりとかしていしまっていてこれももうやらないようにしよう、、、って思いました。
総括
kotlinについて少し理解が深まったきがします。 これからもkotlinの勉強会に積極的に参加しようと思います。
個人的によく使うツール
普段使っているツールを棚卸ししたいなと思い、個人的なメモとして残しておきます
自己紹介
マシン
- 業務: MacBook Pro 15inch
- プライベート: MacBook Air 13inch
デバイス
Macのキーボードが打ちづらくて嫌になってときにHHKB使います US配列が使いたくなったときにAppleのキーボード使います
外部ディスプレイ
ヤフオクで落とした安いやつ
IDE
- AndroidStudio
https://developer.android.com/studio/index.html?hl=ja
これは今の仕事をする上で必須です。個人的にInteliJのIDEは使いやすくて好きです。
https://developer.apple.com/jp/xcode/
プライベートではiOSアプリを開発しているのでxcodeも必須です。
- RubyMine
https://www.jetbrains.com/ruby/
これも無料トライアル期間のときだけRailsでWebアプリケーションを開発していました。
エディタ
エラーメッセージが出た時とかにここにコピーして読んだりしています(Xcodeはログが読みづらいので、、)
自分はVim派です。慣れればめっちゃ使いやすい
ソース管理
よかったらフォローお願いします https://github.com/yshogo
メモ
- wri.pe
増井雄一郎さんが開発したメモアプリ。個人的にこれが一番使い安くて気に入っています
保存しておきたい記事や、メモなどは全てここに同期しています
(最近Evernoteへの不満が溜まってきたのでメモアプリ開発中)
https://getpocket.com/login?e=4
気になった記事はあとで読みたい系の記事はとりあえずここに置いておくようにしています
ターミナル
- iTerm2
Macのデフォルトのものを使ってもいいんですが、こっちの方がウインドウの分割ができて便利なのでこちらを使用しています
タスク管理
- Trello
個人でアプリはこれでタスク管理しています
なにか便利なツールがあれば教えてください
お願いします
Railsチュートリアルを第1章から進めています
Railsチュートリアル日本語翻訳版をはじめています。 https://railstutorial.jp/chapters/rails_flavored_ruby?version=5.0#cha-rails_flavored_ruby
はじめた理由
業務では主にAndroidアプリを開発しています。 そのアプリがDBとやりとりするためのAPIも自分で書いています。
なのでサーバーサイドの基本的な知識はあると思っています。
ですが、Javaでしかかけません。これではJavaが急になくなったときに仕事がなくなるのでRailsを始めました。(嘘)
きっかけ
youtubeでこの動画をみてはじめようと思いました。 https://www.youtube.com/watch?v=c4D2b5vZG2o
Junichi itoさんの記事がRailsを始めた時に一番最初にやったことらしいので真似して見ました。
詳しくは下記に http://blog.jnito.com/entry/2015/04/22/074055
進捗
現在第3章が終わったところです。
所感
内容はRailsだけでなくGitの使い方、herokuの使い方も 説明されていて本当に勉強になります。
Railsでサンプルコードをひたすら書くだけでなく、 テストコードも書きます。
ソースコードはGithubに置いておきます。 https://github.com/yshogo
また、全部終了したら詳しく書きたいと思います。
CoreDataでNSPredicateを使ったらEXC_BAD_ACCESSが出た
ゴールデンウィークいかがおすごしでしょうか 私はだらだらしたり、コード書いたりしてました。(この二つしかしていない)
今日出たエラーを残しておきます。
CoreDataでPredicateを使ったらエラー出た
このエラーが出力されてハマりました、、、、
これってログとか出してくれないの、、、 (ここにログが出力されてるよーとかありましたら教えてください)
解決方法
NSNumberでラップすることです。
CoreDataのカラムの定義をInteeger16に設定したので比較する変数の型をIntにしていたのでそのまま比較できると思っていましたが、 どうやらNSNumberでラップする必要があるようです。
初心者殺しですね、、