iOS関連のことを調べてみた2022年09月28日

iOS関連のことを調べてみた2022年09月28日

【Swift】delegateに関して備忘録

こんにちは。
社会人1年目のエンジニアです。
今回はdelegateに関して備忘録としてまとめておこうと思います。

## そもそもdelegateとは
デザインパターンの1つ。
あるクラスから、他のクラスに処理を「任せる」こと。

任せる処理内容の例:ボタンをタップした際の処理、何かイベントを検知した際の処理

## delegateの実装手順
1. protocolを宣言
1. 処理を任せる側の実装
1. 処理を任せられる側の実装
1. delegateを呼び出す

### protocolの宣言
プロトコルとは、**クラスや構造体が保持するプロパティやメソッドなどの決まり事を定めるもの**です。
今回では、任せる処理をメソッド(**デリゲートメソッド**)として定義します。
“`swift
protocol PrintDelegate {
func displayLetter()
}
“`

### 処理を任せる側の処理
デリゲートメソッドを使用し、処理の流れを記述します。
“`swift
class DisplayLetter {

var del

元記事を表示

【SwiftUI】ふるさと納税管理アプリ「ふるログ」の開発の全て!個人開発の流れ

SwiftUIを使って個人開発した「**ふるさと納税管理アプリ**」の概要と作成の流れをまとめていきます。

\インストールはこちら/
[ふるさと納税管理アプリ-ふるログ-](https://apps.apple.com/jp/app/%E3%81%B5%E3%82%8B%E3%83%AD%E3%82%B0/id1644963031)

# ふるさと納税管理アプリ-ふるログ-の概要

「ふるログ」は**寄付情報を管理するためのメモアプリ**です。
単純な登録、閲覧、削除、計算を行うだけの簡素なアプリとなっています。

●機能
+ 寄付情報を登録
+ 寄付上限金額を保持
+ 購入URLを登録可能
+ ワンストップ申請の送付済の識別
+ お気に入りの登録
+ 年ごとにリスト化

![2CCE7DA7-EAA5-46F7-B5A5-0843E4639077.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2264957/c45de85c-2ed1-4325-f897-564823010009.jpeg)

元記事を表示

【Swift】$0ってなに???

# はじめに
こんな感じで当たり前のように出てくる`$0`はなんなのでしょうか
“`swift
answers.map { $0.text }
“`
ついさっき理解した(たぶん)ので記事にしときます!

# $0の正体
**結論**
[クロージャ](https://swift.codelly.dev/guide/%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3/#%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3%E5%BC%8F%E3%81%AE%E5%AE%9A%E7%BE%A9)の省略記法
$0は引数の1つ目
$1は引数の2つ目


# 例えば?
このようなクロージャがあったとします。
“`swift
func test(callback: (Int) -> Void) {
callback(1)
}
“`
通常の場合はこのようになります。
“`swift
test { int in
print(int)
}
“`
これを省略記法を使用して書くとこのようになりま

元記事を表示

GoogleのFlutterとFirebaseでアプリ開発

`Google`が提供するオープンソース型のモバイルUIフレームワーク`Flutter`とバックエンドサービスとしてアプリ開発プラットフォームの`Firebase`を組み合わせれば、`SNS`を使ったアカウント作成・チャット・プッシュ通知などの機能が簡単に実装できアプリ開発が楽になります。`Flutter`は無料で提供されていますが、`Firebase`はサーバーサイドを担うので無料のプランもあるものの、使った分だけの従量制プランが推奨されています。大規模なアプリ開発になれば無料では無理かと。。`Firebase`を`Flutter`に連携させるのに[こちらのドキュメント](https://firebase.google.com/docs/flutter/setup?hl=ja&platform=ios
)を参考に構築すると良いでしょう。
![スクリーンショット 2022-09-27 14.20.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1134006/bfc51ec8-3384-4a09-7

元記事を表示

iOSアプリ開発でやっておくべき設定と実装しておきたい機能まとめ!

個人的にアプリ開発をするようになってからアプリ開発をスムーズに行うために**何かと実装しがちな機能や処理、やっておくべき設定など、備忘録がてらまとめておきます**。

# やっておくべき設定

+ アプリアイコンの設置
+ ダークモード対応
+ アプリアイコン下の名称変更
+ 日本語化(Localizations)
+ 広告の付与

## アプリアイコンの設置
アプリアイコンを設置するには「Xcode」から「**Assets**」または「**Assets.xcassets**」をクリックしてその中にアイコンセットを組み込みます。

![2B5B49CB-922D-45CD-A34A-72077AF85A7F.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2264957/6e1dbaf2-6b2a-2ff3-2ea5-4580009cb913.png)

iOSアプリでは**アイコンを複数サイズ用意**しなければいけません。自分で用意するのは大変すぎるので**専用のジェネレーターツールを使うのがオススメ*

元記事を表示

Xcode のwindows organizerでcrashを見る

1.XcodeでApple Store Connectのアカウントをログイン
2.download all profilesを押す
3.windows organizerからcrash レポートが見れるようにできた。

## 参考:
https://stackoverflow.com/questions/45358504/how-to-see-app-crashes-on-xcode-organizer

元記事を表示

SwiftUI 時代に向けた 2 スペースインデントのすゝめ

## なぜ今 2 スペースインデントなのか

![Xcode_Editor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178830/7a9d3428-731b-d3a6-a8ee-27095c178f8e.png)

**コードを書くスペースが狭い?**

というわけで、最近新規で立ち上げる SwiftUI プロジェクトでは 2 スペース幅のインデントを採用しています。

これが中々良さそうな感じなので、 2 スペースインデントをおすすめしていく記事となります。

– 5K2K モニタで解決
– Preview は言うほど使わなくなるので、 Canvas 非表示 + 必要に応じて ⌥⌘↩ で表示
– そもそもネストが深いなら別に切り出すべき

等々言いたいことはあるかもしれませんが、興味があればお付き合いください。

## 2 スペースインデントのメリット・デメリット

### ? コード幅の節約

これが最大のメリットです。

冒頭でも触れたように SwiftUI での P

元記事を表示

【Swift】UIKitでPreviewを使いながら開発をする

# はじめに
Xcode11で導入されたXcode Previewはいままで表示速度や意味不明なエラーで使い物になりませんでしたが、Xcode14で割と快適に使えるようになりました。
UIKitで使用してみたのでやり方と感想を書きます。

# 表示するView
今回はViewControllerが表示された事がわかれば良いので背景色を赤にしてるだけです。
“`swift
import UIKit

class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .red
}
}
“`

# 実装
“`diff_swift
import UIKit
import SwiftUI

class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLo

元記事を表示

Unityで作成したiOSアプリの更新手順

unityで作成したiOS用アプリの更新につき手順を記します。
定期的に更新しなければいけないのに、都度忘れてしまっているので記事にしました。
足りないところ適宜更新しますが、間違っているところあったらご指摘くださいね。

# 環境
・Mac(私はMacBook Proを使用してます)
・Unity 2021.3.5f1(LTS)
・xcode

#Unity
FileからBuild Settings…を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2436967/ace41305-350a-b10a-c365-185075635f5d.png)

PlatformにてiOSを選択
Player Settings…よりPlayerの
Company Name
Project Name
Version
を設定して閉じる

Build SettingsウィンドウにてBuildを押下
![image.png](https://qiita-image-store.s3.ap-nor

元記事を表示

【Swift】TwitterAPIのエラー構造体を作った

# はじめに
TwitterAPIを使ったアプリを作った時にエラー構造体を作ったので共有します。
返ってくる可能性のあるエラーは全て記載してあると思います。

# 実装
“`swift
// MARK: – TwitterError
struct TwitterError: Decodable {
let errors: [Errors]
}

// MARK: – Error
struct Errors: Decodable {
let message: String
let code: ErrorCode
}

// MARK: – ErrorCode
enum ErrorCode: Int, Error, LocalizedError, Decodable {
case code3 = 3
case code13 = 13
case code17 = 17
case code32 = 32
case code34 = 34
case code36 = 36
case code38 = 38

元記事を表示

【SwiftUI】URLスキームを受け取る

# はじめに
TwitterのURLスキームはURLスキームの種類によって起動する画面が振り分けられます。
今回はその挙動をSwiftUIで再現してみます。

# TwitterのURLスキーム
**タイムラインタブ**
twitter://timeline

**検索タブ**
twitter://search

**メンションタブ**
twitter://mentions

**DMタブ**
twitter://messages

# URLスキームの設定
① プロジェクトを選択します
② メインターゲットを選択します
③ 「Info」を選択します
④ 「URL Type」を開きます
⑤ 「+」を押します
![スクリーンショット 2022-09-22 18.42.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/d13f68e5-95fa-f91d-304e-c84357d3471d.png)

⑥ 「Identifier」を設定する
⑦ 「URL Schemes」を設定する
![ス

元記事を表示

Xcode14.0でiOS15.7がインストールされた端末の実機デバッグができない!

`/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/` にiOS15.7に対応するサポートファイルがあれば動くのですが、今のところ(2022-09-22現在)そんなものは存在しないようです。

https://stackoverflow.com/questions/73721778/looking-for-ios-15-7-support-files-for-xcode14

XCode14の[リリースノート](https://developer.apple.com/documentation/xcode-release-notes/xcode-14-release-notes)を読んでみると、Known Issues欄の最後にこのような記述が。

> ・Xcode 14 cannot be used with iOS 15.7 for development. (99847608)
>  Workaround: Use Xcode 13.4.1 with iOS 1

元記事を表示

[TCA] enum State をstruct Stateに持たせる場合のpullback方法

# 問題
`The Composable Architecture`の`SwitchStore`での画面出し分けをする際、enumにStateを持たせる場合、以下のようにpullbackします。

“`swift:AppCore.swift
enum AppState {
case firstScreen(FirstScreenState)
case secondScreen(SecondScreenState)
}

enum AppAction {
case firstScreenAction(FirstScreenAction)
case secondScreenAction(SecondScreenAction)
}

struct AppEnvironment { }

let appReducer = Reducer.combine(
firstScreenReducer
.pullback(
state: /AppSt

元記事を表示

ElixirDesktop iOS でカメラ撮影

## はじめに

ElixirDesktop を iOS で動かそうと色々検証中

https://qiita.com/RyoWakabayashi/items/f5d97a7e857983eac7a4

今回はカメラを起動して写真を撮影し、 Elixir 側で画像処理してみました

## 実行環境

– 開発環境・デスクトップ版実行環境

– macOS Monterey 12.5.1

– モバイル版実行環境

– iPhone SE 第2世代
– iOS 15.6.1

## 実装コード

デスクトップ用

https://github.com/RyoWakabayashi/elixir-desktop-camera

iOS用

https://github.com/RyoWakabayashi/elixir-desktop-camera-ios

## 参考記事

画像データの連携と画像処理部分を参考にしました

https://qiita.com/the_haigo/items/236e0e3c6cfbbd12799a

カメラ起動について参考にしました

ht

元記事を表示

SwiftUI ⌘+クリックで出るメニューでViewを分割したりする

# 環境
Xcode Version 14.0 (14A309)
SwiftUI Tutorialの[Building Lists and Navigation](https://developer.apple.com/tutorials/swiftui/building-lists-and-navigation)を元にしています

# 概要
SwiftUIでコードを扱っているとき、Viewのコードを⌘キー+クリックすることでSwiftUIに対し色々便利なことができるメニューが表示されます。

![スクリーンショット 2022-09-20 13.52.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687960/aaa2ea7f-639c-34ce-5dbb-b44305601b2c.png)

主にSwiftUIでのみ出るメニューについて説明します。
以下のSwiftUIを操作します。

“`swift
struct LandmarkDetail: View {
var landmark

元記事を表示

External Link Account API の実装方法

# External Link Account API
[ExternalLinkAccount](https://developer.apple.com/documentation/storekit/externallinkaccount)

:::note warn
2022年10月12日までにExternal Link Account APIを採用し、App Storeにアプリのアップデートを提出する必要があります
:::

# ソースコード
“`swift
/// External Link Account
if #available(iOS 16.0, *) {
Task {
if await ExternalLinkAccount.canOpen {
do {
try await ExternalLinkAccount.open()
} catch {

元記事を表示

ゆめみのインターンシップに参加した話

# 自己紹介
Swift歴1年ちょっとの文系大学生です。
普段はSwiftUIで個人開発をしていて、UIKitは全くの初心者です。
インターンシップに参加することに勇気が出ないよって方にインターンシップの雰囲気を伝えれたなと思います。

# [インターン詳細](https://hrmos.co/pages/yumemi/jobs/0000502)
最前線で活躍するエンジニアと共に、開発を体験!

– Pull-Requestベースの実践的な開発
– 先輩エンジニアとペアプロ
– テスタブルな設計とリファクタリング
– iOSアプリ開発あるある 不具合発生パターンを学習
– UIKitの鬼門 UITableView強化トレーニング
– 成果発表LT会

期間: 9月1日〜9月14日
場所: オンライン(家)
内容: https://github.com/yumemi-inc/ios-training

[こちら](https://github.com/yumemi-inc/ios-training)のリポジトリのREADMEに記載されているSessionをレビューを頂きながら進めていくと

元記事を表示

サイバーエージェントのインターンシップに参加した話

# 自己紹介
Swift歴1年ちょっとの文系大学生です。
普段はSwiftUIで個人開発をしていて、UIKitは全くの初心者です。
インターンシップに参加することに勇気が出ないよって方にインターンシップの雰囲気を伝えれたなと思います。

# [インターン詳細](https://www.cyberagent.co.jp/careers/students/event/detail/id=27497)
![27497_ext_03_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/44aba2c8-ec14-47f7-6262-55e0a96ea498.png)
期間: 9月16日〜9月18日
場所: Abema Towers
内容: 「無視できない!設計が学べるiOSハンズオン」

オフラインでの開催でした。

![IMG_1356.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/a143a35

元記事を表示

【Flutter / RESTAPI】簡単なAPIをFlutterで呼び出してみた!

## 初めに
iOSやAndroidの開発を今までやってきましたが、
ここ最近はFlutterを使用して開発をしている企業も
多いのではないかと感じます。

フリーランスの案件にもちらほら見かけるので、
今更かもですが勉強しなくては。。

Dartは簡単に触ったので、お馴染みのAPI操作を
やってみました!

## 使用するAPI
郵便番号をパラメータとして使うことで、
住所の情報がJson形式で返却されるAPIを使用します。

参考:郵便番号データ配信サービス

http://zipcloud.ibsnet.co.jp/

## 環境
・Android Studio
・url_launcher: 6.1.2
・flutter_html: 2.2.1
・http: 0.13.3

## 実装
全体のソースというよりは、テンプレート見たいな感じで
順に説明します。
### 0. 事前準備
“`
// ①pubspec.yamlで使用するパッケージを入力
# The following adds the Cupertino Icons font to your application.

元記事を表示

FlutterのiOSデバッグ起動時に Null check operator used on a null value

`Flutter`のデバッグ作業中、アプリ起動時に`FirebaseAuth.instance.currentUser`の部分で`Null check operator used on a null value`のエラーが出てどうにもいかなかった時の対処法です。`flutterfire_cli`で`flutterfire configure`を試したり、`XCode`のキャッシュを削除したりする前に、

– `firebase login`で確認しても`user`の確認が取れている。
– デバッグのシュミレータでなく実機での検証は成功する。
– 周りでは動いていてコードには問題がなく、アプリケーション内部のクラッシュと判断できる。

上記に該当するのであればまず、試して頂きたいのが。![スクリーンショット 2022-09-19 16.23.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1134006/4753a43e-3cf1-91de-926a-6583dd7daaca.png)
`Simula

元記事を表示

OTHERカテゴリの最新記事