iOS関連のことを調べてみた2019年11月20日

iOS関連のことを調べてみた2019年11月20日
目次

???iOS開発で誰も教えてくれなかったけど当たり前にやっているSwiftの書き方???

「誰も教えてくれなかった」ってタイトルですが、僕iOS開発に関しては独学でしかやってないので、よく考えたら誰にも教わってないですね???
まあなんか、本読んでもあんまり明示的には書いてないけど、「皆当たり前にやってるやん!」と思ったことを書いていきます。
(どこかに書いてあるのを見落としただけかもしれませんが)

# delegateで要求されているprotocolはextensionで書く
ルールではないですが、慣習的にextensionで各protocolごとに分離して書いた方がきれいです。

“`swift
extension SampleMapViewController: MKMapViewDelegate {

func mapView(_ mapView: MKMapView, regionWillChangeAnimated animated: Bool) {
//do something
}
“`

# プロパティの型をOptionalにするとイニシャルしなくてよい
Swiftの制約として、クラスに紐づくプロパティは全部イニシャライザで初期

元記事を表示

#7 Main.storyboardのViewのアイテムをコードと接続する1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
Xcodeの右上の赤枠をクリックする.

スクリーンショット 2019-11-20 午前0.37.51.png

##part2
画面が分割するので,分割した画面の表示するfileを選択する.

スクリーンショット 2019-11-20 午前0.39.23.png

##

元記事を表示

#6 新規のUIViewControllerのクラスを作る1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
ナビゲータバーで右クリックし,`New file`を選択する.

スクリーンショット 2019-11-20 午前0.17.49.png

##part2
`Cocoa Touch Class`を選択する.

スクリーンショット 2019-11-20 午前0.18.03.png

元記事を表示

#5 iOSアプリのLabelの編集1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
編集したいLabelを選択する.

スクリーンショット 2019-11-19 午後11.37.41.png

##part2
`Attributes inspector`からtextや色,大きさを変更する.

スクリーンショット 2019-11-19 午後11.09.03.png#4 iOSアプリでの画面遷移の1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
`UIViewController`と検索する.

スクリーンショット 2019-11-19 午後10.56.48.png

##part2
`UIViewController`を`Main.storyboard`に追加する.

スクリーンショット 2019-11-19 午後10.57.12.png#3 ViewControllerにNavigationControllerをつける1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
`NavigationController`を付けたい`ViewController`を選択する.

スクリーンショット 2019-11-19 午後10.47.09.png

##part2
Xcodeのツールバーから`NavigationController`を選択する.

スクリーンショット 2019-11-19 午後10.47.58.png#2 iOSアプリでAdModを使えるようにする1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
`Firebase`にログインして,プロジェクトを作成するか既存のものを選択する.

[Firebase console – Google](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=2ahUKEwinkf-nqfblAhVKZt4KHQhvCmkQFjADegQIAhAB&url=https%3A%2F%2Fconsole.firebase.google.com%2F%3Fhl%3Dja&usg=AOvVaw0nJq2yfxv3uujz0Z6Ozn8z)

スクリーンショット 2019-11-18 午後11.18.14.pngpod install 時に No such file or directory @ rb_sysopen エラーが発生した際の対処方法

# pod install 時に No such file or directory @ rb_sysopen エラーが発生した際の対処方法

ライブラリをインストールするために、

“`shell

$pod install
“`
した際に、以下のエラーが発生してハマったので備忘録。

“`shell
Errno::ENOENT – No such file or directory @ rb_sysopen – /Users/zizi4n5/.cocoapods/repos/jsdelivr-cocoa/all_pods_versions_2_e_c.txt
/Library/Ruby/Gems/2.3.0/gems/cocoapods-core-1.8.4/lib/cocoapods-core/cdn_source.rb:316:in `initialize’
/Library/Ruby/Gems/2.3.0/gems/cocoapods-core-1.8.4/lib/cocoapods-core/cdn_source.rb:316:in `open’
/Library/R

どこよりもわかりやすいiOS最強課金まとめ

#はじめに
わかりにくいiOSのアプリ内課金についてどの記事よりもわかりやすいものを目指して書きました。
実際に実装していて困ったことなどもまとめたので同じ状況で悩んでる人の助けになれば幸いです。
今現在まだ実装途中でして、まだ細かい部分など書ききれていない部分もありますが、都度更新していきたいと思います。
間違ってることなどあればご指摘くださいmm

##課金について
###課金の種類

| 種類 | 例 | 説明 |
|:—————–|:——————|:——————|
| 消耗型 | ゲーム内でのスタミナやガチャを引くためのアイテムなど | 一度使うとなくなり、再度購入が可能 |
| 非消耗型 | 広告の非表示や使える機能の拡張など | 一度の購入だけで無制限に使用できる | 
| 自動更新サブスクリプション | 月間サービスのクラウドストレージや週刊雑誌のサブスクリプションなど、サービスや定期的

コードレビュー虎の巻

# レビューガイドライン(Review GuideLine)

ここで述べているレビューはピアレビューについての方法です。
(作業成果物の欠陥と改善の機会を探すレビュー)

「最悪を最初に」を基本としてレビューすべき、
たとえば、仕様やアルゴリズムに欠陥があるのに、typoにこだわってもしょうがないので、なにが最悪かを考え、それを防ぐための物からレビューをします。

誤りがプロダクト全体に影響し、手戻りのコストが高くつく、あるいは失敗するようなリスクがないかを考慮にいれてレビューの対象を選択します。
たとえば、基本的な初期フェーズの要求仕様や、クリティカルな決定の基礎になる仕様、使用頻度が高いモジュールなどを重点的にレビューします。

以下に書く項目はレビュアーに負担をかけないようにするのが前提なのでレビュアーに出す前にそもそもテストしたい項目です。

参考:
[あなたのおっしゃるレビューってどのことかしら?](https://qiita.com/mima_ita/items/c3490ad1ccc12ad853f1)
[コードレビューの際に気

あるFrameworksを追加したら「1 duplicate symbol for architecture arm64」エラーが出た時の対応方法

#はじめに
BLE通信対応の機器との接続処理を追加する為に、
提供されたFrameworksを追加したら「1 duplicate symbol for architecture arm64」エラーが発生した。

#ググってみた
「duplicate symbol for architecture」にヒットするサイトがいくつか出てきたが、
何となく違う感じがしたので自分で考える事に…

#エラー内容をよく見てみる
エラー内容
“`duplicate symbol ‘Framneworks名’ in:
/XXXXXX/○○ViewController.o
/XXXXXX/□□ViewController.o
ld: 1 duplicate symbol for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)“`
今回BLE機器と通信する為に手を入れたViewControllerで重複が発生しているので心当たりが…

#エラー原

元記事を表示

超簡単な触りを見て、FlutterのColumnとRowのウィジェットイメージを理解する

# 対象読者
初心者で、RowやColumnのイメージだけを知りたいレベル
簡単なRowやColumnを書く時の参考にしていただけるといいかもしれません。
僕は文章だけだと全く理解できないので、図にしてみました。

# どのような時に使うのか?
## 子が複数の時
ColumnやRowを用いる

### Column
子(child)を垂直配列で表示するウィジェット。

https://api.flutter.dev/flutter/widgets/Column-class.html

### Row
子(child)を水平配列で表示するウィジェット。

https://api.flutter.dev/flutter/widgets/Row-class.html

### 仮に以下の画像を無理やりウィジェットで表現してみると

授業のフリー素材

![授業のフリー素材.png](https://qii

元記事を表示

How to Convert an Android App into an iOS App

The development of mobile apps is highly reliant on one’s target audience. If you have an iOS or Android app, then you can only target a single platform and audience segment. To ensure that your product reaches more people, it is a good idea [to develop mobile apps] (https://codeit.us/services/mobile-app-development-services) for both iOS and Android platforms. This article shares a few tips on how to convert or “port” an Android mobile application into an iOS mobile application.

The conversion

元記事を表示

XcodeのUIテスト時にiOSシミュレータのステータスバーを変更する

pre.png
## iOSシミュレータのステータスバーを変更する方法

Xcode11から `xcrun simctl` コマンドに `status_bar` 機能が追加され、iOS シミュレータのステータスバーの表示を変更できるようになりました。

(参考) [iOSシミュレーターのステータスバーを変更する](https://qiita.com/mishimay/items/6fb3054f12a3dbeedee9)

[fastlane](https://docs.fastlane.tools) の [snapshot](https://docs.fastlane.tools/actions/snapshot) でストア用のスクリーンショット撮影する際などに活躍しそうですね!

## ステータスバーを変更するタ

元記事を表示

Xcode SwiftUI 選択時にデフォルトで作成されるプロジェクトのフォルダやファイルの備忘録

プロジェクト作成時にたくさんフォルダやファイルができるのだが、
まとまった資料がヒットせず、初心者にはよくわからなかったので整理した。
プロジェクト名をtest1とした場合。
![截屏2019-11-1815.48.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518389/4d413a1d-362f-f500-fd0b-154182274b04.png)

●AppDelegate.swift : アプリ「開始時」、アプリ「終了時」の管理用、肥大化を避けるために多数の処理をここに書くことは推奨されていない
https://developer.apple.com/documentation/uikit/uiapplicationdelegate

●SceneDelegate.swift : アプリ「起動中」(アクティブになった、バックグラウンドになった)の状態変化管理用、マルチインスタンス立ち上げる場合の管理用

※AppDelegate.swift と SceneDelegate.swift

元記事を表示

iOS firebase cloud functionsのcallで3840エラーが出たら

#エラーが起きる時
###functions側(Typescript)

“`typescript
import * as functions from ‘firebase-functions’

export const callTest = functions.region(‘asia-northeast1’).https.onCall(data => {
console.log(‘callTest called!’)

return {
A: ‘Hello World’,
B: 42
}
})
“`

###クライアント側

“`swift
import Firebase

// ~省略~

func call() {
Functions.functions().httpsCallable(“callTest”).call { (result, error) in
if let result = result,
let resData = result.data as? [String : Any]

元記事を表示

iOS/Android/Windows/Web を構築するためプラットフォーム Uno Platform を試してみた

# Uno Platform とは

UWPベースのコード(C#およびXAML)を書くだけでタイトルにある4プラットフォームで実行できるプラットフォームです。(iOS,Android,WebAssembly)

https://platform.uno/docs/articles/intro.html

# 環境準備

– Visual Studio 2019

以下のワークロードのインストール

– ユニバーサルWindowsプラットフォーム
– .NET デスクトップ開発
– .NET によるモバイル開発
– ASP.NET と Web 開発

# 実装

手順は公式と同じように進むので英語ですがこちらでも参照できます。
https://platform.uno/docs/articles/getting-started-tutorial-1.html

## 拡張機能のインストール

拡張機能→拡張機能の管理から 「Uno Platform Solution Templates」を追加し、 vs を再起動します。
![image.png](https://qiita-ima

元記事を表示

SwiftUIでTextViewを使う(日本語入力可能)

[SwiftUIでTextViewを使う](https://qiita.com/abouch/items/8fa4c8e7777fd4ed37db)を参考にした。

“`swift
import SwiftUI
import PlaygroundSupport

struct MultilineField: UIViewRepresentable {
@Binding var text: String

let onEditingChanged: (Bool) -> Void

init(text: Binding, onEditingChanged: @escaping (Bool) -> Void = {_ in}) {
self._text = text
self.onEditingChanged = onEditingChanged
}

func makeCoordinator() -> MultilineFieldCoordinator {
Mu

元記事を表示

【Bitrise】Create new appで「No shared schemes found for project:」というエラーが出る

Bitriseで「Create new app」を行い、ブランチを指定しバリデーションを行っているとタイトルのエラーが出ました。

## :star: 確認すること
・ プロジェクトの「Manage Scheme」で対象のtargetの「shared」欄にチェックが入っているか確認する、入っていなればチェックする
・ 「.gitignore」ファイルで「usershareddata」フォルダをignoreする設定になっていないか確認する

このあたりだと思います。
さらに自分の場合は少し特殊なケースでハマりました。

・「shared」欄にチェックが入っているにも関わらず「.xcodeproject」内に「usershareddata」フォルダが生成されていない

という感じでした。
この場合は一度「shared」のチェックを外して、再チェックすると無事生成されました。

## :star: まとめ
とりあえず対象ブランチの「.xcodeproject」、あるいは「.xcworkspace」内に「usershareddata」フォルダが存在しているかと、その中のファイルでSchem

元記事を表示

Firebase/firestoreで位置情報を共有してみた話

Firebaseのrealtime database/firestoreを試してみたくて、お互いの端末の位置情報を共有できないかとやってみました。まずやったのは、2台の端末が共有するドキュメントを作って地図にプロットするようにしてみました。ここでは「loc」としました。

位置情報はお互いが常に許可にし、バックグラウンドでも取得するようにし、

“`
public func locationManager(_ manager: CLLocationManager,
didUpdateLocations locations: [CLLocation])
“`

で値を取得し(多少ゴミは取り除き)、Firestoreにアップするようにしたところ、

“`
let name = UIDevice.current.name
let data: [String: Any] = [
“name”:name,
“createAt”:FieldValue

元記事を表示

OTHERカテゴリの最新記事