20200715のiOSに関する記事は4件です。

【Swift】Stringを空文字でsplitしたい!

こういうやつ

JavaScriptやRubyなら簡単。

"Hello, World".split('') // -> ["H", "e", "l", "l", "o", "," ...]

String#split(separator: Character)じゃダメなの?

"Hello, World".split(separator: "")
// Error: Cannot convert value of type 'String' to expected argument type 'String.Element' (aka 'Character')

そもそも実行できない。

String#components(separatedBy separator: T)

"Hello, World".components(separatedBy: "") // -> ["Hello, World"]

お、惜しい!(惜しくない)

正解 → Array(_ s: Sequence)

Array("Hello, World") // -> ["H", "e", "l", "l", "o", "," ...]

というわけで、Arrayのイニシャライザが使えるようです。
いざ調べても、たどり着くのに苦労したので記事にしてみました。

参考

Convert Swift string to array
https://stackoverflow.com/questions/25921204/convert-swift-string-to-array

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Swift】JavaScriptやRubyみたいにStringを空文字でsplitしたい!

こういうやつ

JavaScriptやRubyなら簡単。

"Hello, World".split('') // -> ["H", "e", "l", "l", "o", "," ...]

String#split(separator: Character)じゃダメなの?

"Hello, World".split(separator: "")
// Error: Cannot convert value of type 'String' to expected argument type 'String.Element' (aka 'Character')

そもそも実行できない。

String#components(separatedBy separator: T)

"Hello, World".components(separatedBy: "") // -> ["Hello, World"]

お、惜しい!(惜しくない)

正解 → Array(_ s: Sequence)

Array("Hello, World") // -> ["H", "e", "l", "l", "o", "," ...]

というわけで、Arrayのイニシャライザが使えるようです。
いざ調べても、たどり着くのに苦労したので記事にしてみました。

参考

Convert Swift string to array
https://stackoverflow.com/questions/25921204/convert-swift-string-to-array

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Flutter+firebaseでアプリが起動しないときの対処法

問題

起動すると下記のような例外でアプリが起動しない

flutter run -d XXXXXXXXXXXXX
Launching lib/main.dart on iPhone 11 in debug mode...
Running pod install...                                             14.3s
Running Xcode build...
 └─Compiling, linking and signing...                        19.6s
Xcode build done.                                           205.3s
Configuring the default Firebase app...
*** First throw call stack:
(
        0   CoreFoundation                      0x00007fff23e3cf0e __exceptionPreprocess + 350
        1   libobjc.A.dylib                     0x00007fff50ba89b2 objc_exception_throw + 48
        2   CoreFoundation                      0x00007fff23e3cd4c +[NSException raise:format:] + 188
        3   Runner                              0x000000010ac7e602 +[FIRApp configure] + 130
        4   Runner                              0x000000010b1d9c89 -[FLTCloudFirestorePlugin init] + 217
        5   Runner                              0x000000010b1d9a96 +[FLTCloudFirestorePlugin registerWithRegistrar:] + 262
        6   Runner                              0x000000010ac7984c +[GeneratedPluginRegistrant registerWithRegistry:] + 204
        7   Runner                        <…>
This is taking longer than expected...

対策

FirebaseのコンソールでAppを予め作っておき、 GoogleService-Info.plist をプロジェクトに追加しておく

image.png

これをちゃんと入れておく
image.png

その他

チュートリアルにはアプリ作ってから起動している風なこと書いてあるけど全然そんな事ありません
(あたりまえなのかもしれない)
https://codelabs.developers.google.com/codelabs/flutter-firebase/index.html

pubspec.yaml にfirebase系のdependencyを追加した瞬間からアプリが動かなくなるので、追加するときには作っておきましょう!(という学び)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

画像の人の関心を得やすい部分(Saliency)のサムネイル化について

そこまで詳しくないのですが、今回はDeepLearningのモデルでSaliencyを測ることで、画像内の人の関心を集めている部分(人の視線が集まるような部分)をトリミングできることを紹介します。
ここでは、すみませんが、こいうことができるよという話が主に中心で、iOSのトリミングのケースでしか紹介しませんが、iOSに限らず他のプラットフォームでも同様なことが可能だと思います。

今までは画像のサムネイル化する際に画像の中心をサムネイル化することが多かったと思いますが、
下記全体の画像内から

Screen Shot 2020-07-15 at 9.36.19のコピー.png

人が関心を集めるポイントをDeepLearningのモデルでSaliencyで抽出することで

Screen Shot 2020-07-15 at 9.35.39のコピー.png

参考:https://medium.com/better-programming/cropping-areas-of-interest-using-vision-in-ios-e83b5e53440b

画像内で人の関心を集めるであろうポイントを抽出できます。(上記の場合は、何もないところで左端にあるリモコンを抽出できています)
上記の場合はiOS13のVision Frameworkで標準で実装されている機能を使用していますが、どこかで学習されているモデルを手に入れればサーバーにアップロードされた画像のサムネイルを作成する際に、画像内で人の関心を集めるであろうポイントを中心にサムネイル化することもできると思います。

そうすることで、より人が関心を集める箇所をサムネイル化していくことができ、ユーザー体験が向上すると思います。

iOSのVison Frameworkの公式ドキュメントや公式のサンプルは下記に記載されています。
https://developer.apple.com/documentation/vision/cropping_images_using_saliency

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む