- 1. XcodeでArchiveしようとしたらbuildはsuccessだがorganizerに現れない
- 2. 【Swift】ゼロからのCombineフレームワーク – とりあえずViewにデータバインディングしたいための人の最小実装
- 3. Swiftでパズルゲーム制作を開始した
- 4. FlutterでSemanticsクラスを使ってコンテキストメニューを作成
- 5. 【Swift5】UserDefaultsを使ったTodoアプリ
- 6. initとは
- 7. ipa作成時に「IPA processing failed」と表示されて作成が出来ない場合の対処方法
- 8. 【Swift 】[String]()とは
- 9. [swift]MVCモデルに関して簡潔にまとめました。
- 10. iOSアプリ初リリースからこれまでにApp Store Reviewチームからリジェクトされた理由5選
- 11. Storyboardに表示されるMinimapを非表示にする
- 12. Vision.Frameworkの顔検出を試してみた
- 13. 自分的にiPhoneシミュレータでiOS開発する際に欠かせない機能8つ
- 14. Xcode11で作成したプロジェクトをiOS12に対応させる方法
- 15. NaturalLanguageフレームワークを使用して日本語のための自然言語処理
- 16. 【Swift】テキストに取り消し線を付ける
- 17. [swift5]Protocolの作成方法
- 18. Xcode 11でビルドしたアプリをiOS 14 betaシミュレータ上で動かす方法
- 19. AutoLayoutで使えそうなUIViewのConstraintsExtension
- 20. 【個人開発】FlutterとFirebaseでサボり防止アプリを作った
XcodeでArchiveしようとしたらbuildはsuccessだがorganizerに現れない
iPhoneアプリの更新リリースしようと思ったらなぜか出鼻を挫かれた。
#環境
Xcode Version 11.6
MacOS 10.15.4#現象
Product->Archiveするといつものようにbuildの時間に入る。
“Build Succeeded”の表示が出て、通常ならこのままOrganizerが立ち上がり、Archiveの履歴が表示されるはずである。
しかし表示されない。
Window->Organizerで開いて見ても今作ったものが履歴に表示されない。これいかに。#原因
https://developer.apple.com/forums/thread/127212
↑と同じことが起きているようである。
/Users/****/Library/Developer/Xcode/Archivesまできて
この下には日付ごとのディレクトリがある。
しかし
2020-08-01だけが所有者がrootになっておりdrwxr-xr-xときた。
書き込めてないんじゃない?#解決策
その場しのぎではあるが、2020-08-01の権限を777にするとarchiveはうまく
【Swift】ゼロからのCombineフレームワーク – とりあえずViewにデータバインディングしたいための人の最小実装
# 意外と難しかったCombine
RxSwiftならある程度使えるし、簡単に使えるようになるかな?と思っていました。
しかし、いざ試してみるとなかなか苦労したので、まずは普段の開発に取り入れられる部分から切り出してみました。# Viewに値をバインドする最小実装 UIKit版
“`swift
import Combine
import UIKitclass ViewModel {
@Published var labelText: String = “Default value.”
}class ViewController: UIViewController {
var label: UILabel! // 適当な場所(storyboard, viewDidLoadなど)で初期化する
let viewModel = ViewModel()private var cancellables = Set
() override func viewDidLoad() {
Swiftでパズルゲーム制作を開始した
## 動機
今まで独自のゲームを作ってばかりでしたが、全然売れなかったので、有名ゲームをパク・・参考にすることにしました。
とりあえず形から入ろうということで、ドラゴンとパズルをテーマにすることにしました。このテーマで有名なゲームを参考にしていたのですが、「面白いか?」と単純な疑問を抱きました。
もう少し分かりやすいルールのパズルの方が良いのではと思い、別の有名ゲームを参考にしました。
ツムツムかポコパンかよく覚えていませんが、その辺りのゲームのルールが分かりやすそうだったので、パズル部分は隣接するアイテムをなぞって消すルールにしました。## 現状
TestFlightでベータ版をテストしている状態です。パズルゲーム制作途中。
ベータ版を試してもらっています。
TestFlightを使ってiPhoneでテストしてます。FlutterでSemanticsクラスを使ってコンテキストメニューを作成表題の機能を組み込むときに参考情報が少なかったので、メモとして記します。
——
##実現したいこと
アプリにはタップや長押しで呼び出すメニューの他に、スクリーンリーダー(Android→TalkBack、iOS→VoiceOver)向けにコンテキストメニューを提供することができます。
Androidでは
[[ローカルコンテキストメニュー]] → [[操作]]
(ローカルコンテキストメニューは上にスワイプしてから右にスワイプで開きます。)
iOSでは縦のスワイプ
でそれぞれ呼び出すことができます。
これにより素早く機能を呼び出すことが可能です。
作成は対象のウィジェットを[[Semantics()]]で囲い[[customSemanticsActions]]プロパティでメニューを定義します。また[[onTap]]と[[onLongPress]]プロパティでタップと長押しの動作も定義できます。
これは[[GestureDetector()]]でウィジェットを囲い定義することと同様です。
Semantics()ではそれぞれ[[onTaphint]]と[[onLongPress【Swift5】UserDefaultsを使ったTodoアプリ
# はじめに
だいぶ前に書いた[前回の記事](https://qiita.com/TheAtlasEngine/items/d29eba3e01f51c5906ea)の情報が古くなり、また掲載しているコードも今ならもう少し綺麗にできるなと思ったので更新記事を書くことにしました。# 注意点
## UserDefaults.synchronize()について
いつの間にか[公式ドキュメント](https://developer.apple.com/documentation/foundation/userdefaults/1414005-synchronize)にて「使うべきではない」と明示されてました。どうやら[iOS12のリリースノート](https://developer.apple.com/documentation/macos-release-notes/foundation-release-notes?preferredLanguage=occ)でも告知されていたようですね。なので本記事でも使わないことにします。ただ、同期が少し遅い気がします。例えばチェックマークをつけ
initとは
ググったら一発でわかりやすい記事が出てくるswiftのinitについて。
Modelでファイル作ってプロパティ定義した後にいつもこいつがいる。
initっていうんだからとりあえず初期化してんだろーなーとは勘で考えますが、なんか気になったので書きます。
***
【イニシャライザ】
>型(クラス、構造体、列挙体)のインスタンスを初期化(initialize)する特殊なメソッドのこと“`
class User {
var id: String
var fullName: Stringinit(id: String, fullName: String) {
self.id = id
self.fullName = fullName
}
}
“`init(){}の中括弧の中で、宣言した値を初期化してます。
ipa作成時に「IPA processing failed」と表示されて作成が出来ない場合の対処方法
# 概要
アーカイブしたプロジェクトから、ipaを作成しょうとすると、「**IPA processing failed**」と表示されて作成出来ない問題が発生しました。いろいろ調べて解決方法が分かりました。
ネット上では間違った方法が多いので、同じ問題にぶち当たった方のために、解決方法をQiitaに残します。
XcodeのOrganizeから作成しようとした時の画面 **↓**
CIサービス(Bitrise)でも、exportArchiveコマンド実行時にエラー
【Swift 】[String]()とは>var interestId = [String]()
変数宣言でよくみるこの配列の後ろについた()
そいやあこいつ、なんで()がついてんの?
って思ったので、忘備録として記録しておきます。
“`
Swiftでの配列の書式とコードの書き方空で初期化する場合は下記の書き方をします。
var 配列変数名:[型名] = []
var 配列変数名 = [型名]()
“`ほーなるほど。
var 配列変数名:[型名] = []
と書いても同じなんですね。
空で初期化する時にこの書き方をするらしいです。
[swift]MVCモデルに関して簡潔にまとめました。
## MVCモデルとは
`Model`,`View`,`Controller`の頭文字をとった略称でそれぞれのフォルダを作成してプログラムの構成を他者が見た場合でもわかりやすくする手法。この手法は多くのプログラマに使用されており、共通のストラクチャーとして認識してもらいやすい。
また、分業して作業する事ができる点や、変更や修正があった場合に影響を受けにくいなどというメリットが存在する。## Model
機能に関する処理を行う。(データの処理を行う)## View
表示と、ユーザーからのアクションを受ける処理を行う。## Controller
機能とアクションを用いてViewに見せる処理を行う。## 最後に
今回はMVCモデルに関してかなり簡潔にまとめました。
是非参考にしてください!
iOSアプリ初リリースからこれまでにApp Store Reviewチームからリジェクトされた理由5選
私の最初のアプリ(WalCal)をAppStoreにリリースしてから、約9ヶ月が経ちました。リリースから今まで計7回AppleReviewの審査リジェクトされました。今回はそのリジェクト内容を紹介します。
# 1. 画像が鮮明ではない
WalCal(ウォーカル)の決済画面に利用可能なクレジットカード会社(VISA, JCB, MasterCard)のロゴ(UIImageView)をStackviewを使い表示しているのですが、これが全体的に伸びてしまったいたためでデザイン面でApple Reviewチームからリジェクトを食らいました。
![IMG_2339_iphonesespacegrey_portrait.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323176/b477d326-2b87-5dcd-5ca4-442b1cb59a67.png)対処法はUIImageViewのContentModeをScaleAspectFillで設定していたのを、scaleAspectFitに変更しました
Storyboardに表示されるMinimapを非表示にする
Xcode12からStoryboardでMinimapが表示されるようになりました。
これを非表示にしたいと思ったけれどViewメニューにはありませんでした。こちらの Editor > Canvas > Minimap が該当コントロールの表示制御。
無事非表示にできました。
Vision.Frameworkの顔検出を試してみた
# はじめに
**Vision.Framework**での顔検出(+少し顔のランドマーク検出)を試してみて、
取得できるパラメーターや現状やりたかったけどできなかったことをまとめました。
(iOS13まで)# 環境
Xcode 11.4.1
Swift 5今回は、フロントカメラを表示した際に顔検出を行いました。
実装方法は主にこちら([【iOS12対応】Visionを使って顔検出を行う](https://nn-hokuson.hatenablog.com/entry/2019/07/25/212153))を参考にさせていただきました。# 顔検出について
request: VNDetectFaceRectanglesRequest## 顔検出範囲
– 可能
– 横顔の場合
– 目と鼻が出ている場合(口をマスクなどで隠した場合)
– カメラの上下と顔の上下が一致しない場合
– 顔が(縦)半分しかカメラに写っていない場合
– 2mほどカメラから離れた場合– 不可能
– マスクで鼻から下を隠した場合
– 顔上(下)半分
自分的にiPhoneシミュレータでiOS開発する際に欠かせない機能8つ
iOS開発には欠かせないiPhoneシミュレータ。
これが非常に出来がよく、実機で出来ることのほとんどをシミュレートしてくれるので、正直自分は実機よりもこちらを使って開発することが多いです。
Mac上でサクッと動作確認できることはもちろん便利なのですが、ショートカットキーを駆使すればキーボードに手を乗せたままいろいろ操作出来るのがこれまた便利。
また、一見出来なさそうに見えるアレやコレも実はシミュレート出来ちゃいます。
というわけで、個人的に便利だと思っているiPhoneシミュレータの機能をまとめてみました。
## 1. iPhoneシミュレータを回転させるショートカットキー
**「command + →」** で右回転、**「command + ←で左回転」** できます。
回転がほぼ必須なiPadアプリを開発するときは特に重宝します。
Xcode11で作成したプロジェクトをiOS12に対応させる方法## はじめに
久しぶりに新規にプロジェクトを作ったのですが、iOS12で動かなかったのでその対応方法です。
Xcode11から SceneDelegate というものがテンプレートで生成されるようになりました。iOS13以降で同一アプリを複数表示するSceneという概念が導入されたことに伴う変更なのですが、iOS12ではSceneの概念がないためクラッシュします。
そのため、iOS12に対応させるためにはひと手間必要になってしまいました。iPhone5sやiPhone6など、まだまだ現役なので対応させない手はありませんよね。## 開発環境
– Xcode11.5
– Swift## 対応内容
### AppDelegate
UISceneSession Lifecycleの2つのメソッドをiOS13以降のみビルドされるように修正します。また、SceneDelegateで定義されるようになったUIWindowをAppDelegateに追加します。
“`swift:AppDelegate.swift
@UIApplicationMain
class AppDNaturalLanguageフレームワークを使用して日本語のための自然言語処理
Appleには、テキストの分析を支援する `NaturalLanguage` というフレームワークがあります。この記事は、日本語テキスト分析のための自然言語フレームワークがサポートする、いくつかの機能について取り上げます。
“`swift
import NaturalLanguage
“`– テキストの言語を検知
– 文を単語区分に分割この例では、入力テキストは以下のとおりです。
“`
データの保存はiOSアプリの持つ主要な機能です。たとえば、ユーザーが指定した色などの環境設定を保存したり、ウェブサイトのトークンをアプリに保存したり、ToDoリストのアプリを作ってタスクを保存したりすることができます。データをシステムに保存する方法はいくつもあります。
“`## 言語検知
このコマンドを実行して、文の言語を検知できます。
“`swift
func detectLanguage(text: String) {
let recognizer = NLLanguageRecognizer()
recognizer.processString(tex【Swift】テキストに取り消し線を付ける
`NSAttributeString` を使って文字列を装飾するやり方をまとめました。
## 完成図
## 実装
“`swift
@IBOutlet weak var textLabel: UILabel!private func setTestLabel() {
// 表示したいテキスト
let text = “文章の中の一部に取り消し線を付けたい。”
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: text)
// 全体に共通して付けたいレイアウトを設定
attributeString.addAttribute(.font,value: UIFont.syst[swift5]Protocolの作成方法
## 実装のポイント
Protocolの作成方法を5つの項目に分けて言語化及び要約してアウトプットしていきます。
初学者の方**(私も初学者ですがw)**はProtocolに関してわからない部分が多いと思いますが、実装の流れを掴む事ができればコードは書ける**(Xcodeのおかげw)**と思いますので**実装の流れ**に注目して下さい!今回は`ViewController`と`NextViewController`の2画面が存在し、
NextViewControllerからViewControllerへメソッドを委任したいと思います。## 環境
swift5
Xcode 11## ①Protocolの作成
まず`nextViewController`で下記コードのように**Protocolの定義**と、**Protocolで使用するメソッドの宣言**を行います。今は使用するメソッドの規則だけでOKです。“`NextViewController.swift
protocol プロトコル名ProtocolDelegate {
//規則のみ決める
func メソッXcode 11でビルドしたアプリをiOS 14 betaシミュレータ上で動かす方法
最初の1分ほどの手順で、それ以降はXcode 11からiOS 14 betaシミュレータを直接選び、アプリ(iOS 13 SDK)を実行することが可能になります。
何か問題や気付いたことがありましたらコメントで教えていただけると助かります。
## 準備
* macOS Catalina 10.15.6
* Xcode 12 beta 3
* Xcode 11.5:link: [More Downloads for Apple Developers](https://developer.apple.com/download/more/)
このApple公式ダウンロードサイトからXcode 12 betaとXcode 11のxipファイルをダウンロードしてインストールしています。
ビルドを行うXcodeバージョンは11.5でなくてもOKです(Xcode 11.6が現時点で最新)。
App Store版のXcodeでは試していないため有効かわかりません。xipファイルから解凍した各Xcodeは以下の通りに配置しリネームしてあります。
* Xcode 12 beta 3: /AAutoLayoutで使えそうなUIViewのConstraintsExtension
#Contraint用Extensionがおすすめ
コードベースで書いた経験が少なかったため、Constraintをどうするか調べていたところ、とても参考になる記事がありました。
一部自分で手を加えましたが、とても使い勝手が良いです。“`
extension UIView{
func anchor(top: NSLayoutYAxisAnchor? = nil,
left: NSLayoutXAxisAnchor? = nil,
bottom: NSLayoutYAxisAnchor? = nil,
right: NSLayoutXAxisAnchor? = nil,
paddingTop: CGFloat = 0,
paddingLeft: CGFloat = 0,
paddingBottom: CGFloat = 0,
paddingRight:【個人開発】FlutterとFirebaseでサボり防止アプリを作った
先日、個人開発アプリをリリースしました!やったね!!!
審査も通りまして、現在App StoreとPlay Storeで配信されております。
[App Store](https://apps.apple.com/jp/app/%E7%9B%A3%E8%A6%96%E3%81%97%E5%90%88%E3%81%86%E4%BC%9A/id1507154418)
[Play Store](https://play.google.com/store/apps/details?id=work.oka_ryunoske.procrastinators_watch_mutually)
せっかくなので、利用した技術のメリットと注意点をまとめておこうと思います。
# 作ったアプリ
これです。
広報用ページも作ってみたのでリンクを貼っておきます。
広報用ページはスマホで見る用にレイアウトしてます。
[監視し合う会 〜お互いサボらないようにみんなで作業しよう〜](https://kanshi-shiau-kai-app.web.app/)
英語名: Procrastinators W
関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた