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

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

RealmをRxSwiftで実装してみる

## 前提
RealmはRxSwiftCommunityにおいて[RxRealm](https://github.com/RxSwiftCommunity/RxRealm)というライブラリが既に存在しますが、
今回はそれらを使用せず実装して行きたいと思います。

https://github.com/RxSwiftCommunity

https://github.com/RxSwiftCommunity/RxRealm

実装はDIを意識しているためコンストラクタ経由で実体を渡すようにしています。

## 保存
“`swift
func add(object: O) -> Single where O : Object {
return Single.create { observer in
do {
let realm = try Realm()
try realm.write {
realm.a

元記事を表示

本格始動!

iOSアプリを作りたいと思い続けて、数年経ちました。

昨年の誕生日に父親から、macbookairをプレゼントされました。
これで、晴れてアプリ作成に乗り出せる状態になりました。

ちなみに、macの仕様は、

“`
MacBook Air(Retina, 13-inch, 2020)
プロセッサ 1.1GHz デュアルコアIntel Core i3
メモリ 8GB 3733 MHz LPDDR4X
グラフィックス Intel Iris Plus Graphics 1536MB
“`

です。

iOSアプリを作る過程を呟きのような感じで
徒然なるままに記事を書いていきたいと思っています。

元記事を表示

SwiftUIのドロップダウン、ホイール、メニュー、Picker

# 選択メニューを作る方法です

# 選択UIを表示したい
ユーザーに選択肢の中から選んでもらうメニューをSwiftUIで実装するには、Pickerを使います。

# 方法

“`swift
struct ContentView: View {
@State var languages:[String] = [“English”,”Russian”,”Ukrainian”]
@State var greetings:[String:String] = [“English”:”Hello”,
“Russian”:”Привет привет(Privet privet)”,
“Ukrainian”:”Привіт привіт(Pryvit pryvit)”]
@State var selectedLanguage:String = “English”
var body: some

元記事を表示

SwiftUIのViewでNotificationCenterを監視する

# ViewでNotificationを受け取る方法です。

# サクッと通知したい。タイミングに注意

Notification便利ですよね。SwiftUIで使うには以下です。
Viewが生成されるより前にpostされると、受信できないので注意です。

# 方法

### post 発信する側

“`swift
class Greetings:NSObject {
override init() {
super.init()
NotificationCenter.default.post(name: NSNotification.greeting, object: self, userInfo: [“greeting”:”Ciao mondo!”])
}
}

extension NSNotification {
static let greeting = NSNotification.Name.init(“greeting”)
}
“`

### observe 受信する側

“`swift
struct Con

元記事を表示

Android / iOS モバイルアプリのテキスト入力文字数上限と文字カウントの設計について

この記事では、モバイルアプリでのテキスト入力において、以下のことについて解説します。

* UTF-8 の文字数を正しくカウントすることは難しい (別記事)
* 入力可能文字数の上限をどのように定義すべきか
* 入力中の文字カウントはどのように表示すべきか

# 前提

* アプリから利用する Web API の文字コードは UTF-8 とします

# 仕様としての文字カウントの難しさ

Unicode の文字列の文字カウントは特殊です。ユーザーにとっては見た目上の文字カウントと一致する書記素クラスタカウントが理想ですが、API の仕様や UI 表示を書記素クラスタカウントに統一するのも現実的ではありません。

| カウント方式 | 説明 |
| — | — |
| 書記素クラスタカウント | 見た目上の文字カウント |
| コードポイントカウント (UTF-8 文字数) | Unicode codepoint を 1 文字とカウントする |
| UTF-8 バイト数カウント | UTF-8 でのバイト数をカウントする |

Unicode の文字カウントについて詳しい解説は以

元記事を表示

「SwiftUIでMVVMを採用するのは止めよう」と思い至った理由

## 宣言的UIに、MVVMって不要なのでは?

iOS開発の現場で、**宣言的UIが当たり前に使われるような時代**になりました。

**SwiftUIの開発体験、素晴らしい** です。最高です。

![Screen Shot 2022-03-12 at 15.37.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/488b54d9-ecb6-dafd-2c13-bc94d5a04ae7.png)

しかし最近、SwiftUIで当たり前のように **「MVVMで開発しよう」** となったときに、
**「ほんとにそれでいいんだっけ?」** と疑問に思いました。

![question_head_boy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/918d48f3-b279-7bd2-6699-0aef8bf81ab6.png)

自分の考えを深掘ってみると

– 問い:
– **iOS開発

元記事を表示

【Swift】他アプリからファイルを受け取る

# 備忘録

iOS15

### 受け取るファイルの拡張子を指定
![スクリーンショット 2022-03-11 17.27.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/219469/2d6dd473-b89a-47c5-f954-a686a4e0ca08.png)

“`swift
import UIKit

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

var window: UIWindow?

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
if let url = connectionOptions.urlContexts.first?.url {

元記事を表示

【2022年】初めてのAppStoreリリース作業でつまづいた点まとめ

# 作成したアプリをAppStoreにリリースします
本記事は2022年2月20日ストア提出時点の内容です。
以下つまづいた点を列挙します。

# 1.サポートURL

:::note alert
自身のHPを所有していない
:::

これは自身のwebページを持っていない人はどうすればいいんでしょうか、、、
ググってみると、Twitterでも審査通ったという情報が出てきますがどれも2017年くらいかそれより昔の
情報で古い。
しかも、昔より審査は厳しくなっているらしいです。

:::note info
結論:Github Pages を使用した
:::

[GitHub Pagesとは(公式)](https://docs.github.com/ja/pages/getting-started-with-github-pages/about-github-pages)

簡単なサポートページをHTMLとCSSだけで作成してGithubのリポジトリを作ってアップしました。
そしてGithub PageのURLをAppStoreConnectに登録しました。

作成したページ↓
[h

元記事を表示

Couchbase Lite機能 解説:配列データへのクエリ

## はじめに

ここでは、Couchbase Liteデータベースで配列を含むJSONドキュメントへクエリする方法について解説します。

なお、Couchbase Mobileについては、[Couchbase Mobileアプリケーション開発へのロードマップ](https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417)に記事をまとめている他、(これらの記事を元に構成した)以下の電子書籍を無償で頒布しています。

https://techbookfest.org/product/5074954942939136?productVariantID=5042865933647872

また、Couchbase Mobileは、Couchbase LiteとCouchbase Serverとのデータ同期機能を提供します。Couchbase Serverの存在意義、機能詳細、利用方法等については、拙著[NoSQLドキュメント指向データベースCouchbase Serverファーストステップガイド(インプレスR&D刊)](https:

元記事を表示

【Core Data】LightWeight Migrationのやり方

## はじめに
個人でリリースしたアプリで`Core Data`と`CloudKit`を使用しており、機能追加に伴い`Core Data`を修正していくことになりました。**Core Data** のマイグレーションはドキュメントや記事を読む限り、そんなに難しくなさそうですが、しっかり理解したく記事にまとめました。

## 環境
Xcode 13.2.1
Swift 5.5.2

## ドキュメントを読む
ドキュメント:[Core Data – Light Weight Migration](https://developer.apple.com/documentation/coredata/using_lightweight_migration)
### Data Migrationの種類
**1. Light Weight (automatic) Migration**
Light Weight(自動)マイグレーションにより、アプリの変更に合わせたデータモデルの更新が可能。
**2. Heavy Weight (manual) Migration**
データモデルへの変更が自動マイ

元記事を表示

[iOS] xibファイルを指定してViewControllerを生成する

ボタンタップなどで遷移する場合に、特定のストーリボードのViewControllerを生成する方法

~~~objc
Bool nib_b = YES;
NSString* nibname = @”Nibname_A”;

//  条件により表示させたいストリーボード名称をセット
if( nib_b ){
nibname = @”Nibname_B”;
}

// 特定のストーリーボードファイル名称のViewControllerを生成
UIViewController *vc = [[UIStoryboard storyboardWithName:nibname bundle:nil] instantiateViewControllerWithIdentifier:@”ViewConroller”];

// 生成したViewControllerへ遷移
[self.NavigationController pushViewController:vc animated:YES];

~~~

元記事を表示

iOS アプリ終了時 プッシュ通知表示

・プッシュ通知受信 アプリが起動中に受信した場合

~~~
-(void)application:(UIApplication *) application
didReceivedRemoteNotification:(NSDirctionary *)usetInfo {
}
~~~

・プッシュ通知受信-アプリがフォアグランドの状態である場合に、通知表示前にコールされる

~~~
-(void)userNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
withCompletionHandler:(void(^)(UNNotificationPresentationOptions))completionHandler{
NSLog(@”Push通知受信”);
}
~~~

・プッシュ通知受信-ユーザーが通知をタップ後にコールされる

~~~
-(void)userNotificat

元記事を表示

Sync Gatewayデプロイメント:ロードバランサーとの連携

## はじめに

ここでは、Couchbase Mobileを構成するSync Gatewayをデプロイする際のロードバランサーとの関係について解説します。

なお、Couchbase Mobileについては、[Couchbase Mobileアプリケーション開発へのロードマップ](https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417)に記事をまとめている他、(これらの記事を元に構成した)以下の電子書籍を無償で頒布しています。

https://techbookfest.org/product/5074954942939136?productVariantID=5042865933647872

また、Couchbase Mobileは、Couchbase LiteとCouchbase Serverとのデータ同期機能を提供します。Couchbase Serverの存在意義、機能詳細、利用方法等については、拙著[NoSQLドキュメント指向データベースCouchbase Serverファーストステップガイド(インプレスR&D

元記事を表示

Sync Gateway機能解説:Sync Gateway間レプリケーション

## はじめに

ここでは、Couchbase Mobileを構成するSync Gatewayの機能であるSync Gateway間レプリケーションについて解説します。

なお、Couchbase Mobileについては、[Couchbase Mobileアプリケーション開発へのロードマップ](https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417)に記事をまとめている他、(これらの記事を元に構成した)以下の電子書籍を無償で頒布しています。

https://techbookfest.org/product/5074954942939136?productVariantID=5042865933647872

また、Couchbase Mobileは、Couchbase LiteとCouchbase Serverとのデータ同期機能を提供します。Couchbase Serverの存在意義、機能詳細、利用方法等については、拙著[NoSQLドキュメント指向データベースCouchbase Serverファーストステップガイド(イ

元記事を表示

「The Ultimate Guide to WKWebView」をSwiftUIで実装する #10 – Injecting JavaScript into a page –

[「The Ultimate Guide to WKWebView」](https://www.hackingwithswift.com/articles/112/the-ultimate-guide-to-wkwebvie)をSwiftUIで実装してみるの、
10こ目になります。

「[#02](https://qiita.com/kamimi01/items/c889979964820d5f9fa2)」の記事以来の、JavaScriptとのご対面です。

## 目次

シリーズ化していこうと思うので、全体の目次を置いておきます。
リンクが貼られていないアジェンダは、記事作成中または未作成のものになります。

|#|タイトル|
|——|—————–|
|01|[Making a web view fill the screen](https://qiita.com/kamimi01/items/b4d6cbafa587831c1be0)
(WebViewを画面に表示する)|
|02|[Loading remote content](https:

元記事を表示

Sync Gateway 機能解説:メトリクスREST APIとパブリックREST API

## はじめに

ここでは、Couchbase Mobileを構成するSync Gatewayの機能であるメトリクスREST APIとパブリックAPIについて解説します。

なお、Couchbase Mobileについては、[Couchbase Mobileアプリケーション開発へのロードマップ](https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417)に記事をまとめている他、(これらの記事を元に構成した)以下の電子書籍を無償で頒布しています。

https://techbookfest.org/product/5074954942939136?productVariantID=5042865933647872

また、Couchbase Mobileは、Couchbase LiteとCouchbase Serverとのデータ同期機能を提供します。Couchbase Serverの存在意義、機能詳細、利用方法等については、拙著[NoSQLドキュメント指向データベースCouchbase Serverファーストステップガイド(

元記事を表示

ARKitでカメラと平面との距離を測る

![Mar-09-2022 14-18-06.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/9e86dcb3-971a-aa7c-435f-5b21b8cee950.gif)

# 対象平面との距離を測りたい

# ARKitでヒットテストを行う
ARKitでヒットテストを行い、検知した平面の座標と、カメラの距離を計算することができます。

“`Swift
let hitTestResults = sceneView.hitTest(sceneView.center,types:[.existingPlaneUsingGeometry])
guard let result = hitTestResults.first else { return nil }
let hitCoordinates = simd_float3(x: result.worldTransform.columns.3.x, y: result.worldTransform.columns.3.y, z: resu

元記事を表示

Couchbase Lite機能解説:クエリAPI④関数

## はじめに

ここでは、Couchbase Lite 3.0の新機能であるSQL++/N1QLクエリAPIについて解説します。

なお、Couchbase Mobileについては、[Couchbase Mobileアプリケーション開発へのロードマップ](https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417)に記事をまとめている他、(これらの記事を元に構成した)以下の電子書籍を無償で頒布しています。

https://techbookfest.org/product/5074954942939136?productVariantID=5042865933647872

また、Couchbase Mobileは、Couchbase LiteとCouchbase Serverとのデータ同期機能を提供します。Couchbase Serverの存在意義、機能詳細、利用方法等については、拙著[NoSQLドキュメント指向データベースCouchbase Serverファーストステップガイド(インプレスR&D刊)](https://

元記事を表示

[AppStoreConnect] In-App-Purchase商品の審査用スクリーンショットがアップロードできない場合

先日、AppStoreConnectに商品を登録する機会があったのですが、審査用スクリーンショットがうまく登録できなかったので備忘録としてまとめておきます。

# TL;DR

下記のような点に気をつけて画像を作成する。

– **画像の解像度は 幅750px, 高さ1334px, 75dpi の画像を用意する**
– ブラウザはSafariを使う(念の為)
– 拡張子はpngにし、透過は削除する
– 多分画像は軽量な方がよい
– ファイル名は “screenshot.png” のようなシンプルなものにする(スペースや全角文字などを使用しない)

この画像はアップロードできるはずです(2022/03/09現在)↓

# 問題について

AppStoreConnectで、自動更新サブスクリプションの登録時には、審査用のスクリーン

元記事を表示

Couchbase Lite機能解説:クエリAPI③ 演算子

## はじめに

ここでは、Couchbase Lite 3.0の新機能であるクエリAPIについて解説します。

なお、Couchbase Mobileについては、[Couchbase Mobileアプリケーション開発へのロードマップ](https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417)に記事をまとめている他、(これらの記事を元に構成した)以下の電子書籍を無償で頒布しています。

https://techbookfest.org/product/5074954942939136?productVariantID=5042865933647872

また、Couchbase Mobileは、Couchbase LiteとCouchbase Serverとのデータ同期機能を提供します。Couchbase Serverの存在意義、機能詳細、利用方法等については、拙著[NoSQLドキュメント指向データベースCouchbase Serverファーストステップガイド(インプレスR&D刊)](https://www.amazon

元記事を表示

OTHERカテゴリの最新記事