imacswift’s blog

There is no article rambling

XCODE9にバージョンアップしてカメラ撮影ができない。

カメラ処理まわりで、コンパイルエラーが発生。
具体的には、

__T0So22AVCapturePhotoSettingsC12AVFoundation01_abC16SwiftNativeTypesACWP", referenced from、、、

が発生。

解決方法

AVCapturePhotoSettings.availablePreviewPhotoPixelFormatTypes

AVCapturePhotoSettings.__availablePreviewPhotoPixelFormatTypes
にしたら動きました。(XCODEの問題っぽいです)

xcode 9 mach-o linker error | Apple Developer Forums

並列処理(XCODE Version 8.0 (8A218a))






並列処理の動作テスト用プログラムです。

シンプルにできたので公開します。

(playgroundではなく、Single View Applicationで実行してください、私はボタン一つつけて実行しました。)

 

 

 let concurrentQueue = DispatchQueue(label: "test.queue", qos: .background , attributes: .concurrent)
        for i in 1 ... 10{
            sleep(1)
            print("before concurrentQueus.sync",i)
        }
        concurrentQueue.async {
            for i in 1 ... 10{
                sleep(1)
                print("in concurrentQueus.sync",i)
            }
        }
        for i in 1 ... 10{
            sleep(1)
            print("after concurrentQueus.sync",i)
        }
 ||<


結果は
>||
before concurrentQueus.sync 1
before concurrentQueus.sync 2
before concurrentQueus.sync 3
before concurrentQueus.sync 4
before concurrentQueus.sync 5
before concurrentQueus.sync 6
before concurrentQueus.sync 7
before concurrentQueus.sync 8
before concurrentQueus.sync 9
before concurrentQueus.sync 10
after concurrentQueus.sync 1
in concurrentQueus.sync 1
after concurrentQueus.sync 2
in concurrentQueus.sync 2
after concurrentQueus.sync 3
in concurrentQueus.sync 3
after concurrentQueus.sync 4
in concurrentQueus.sync 4
after concurrentQueus.sync 5
in concurrentQueus.sync 5
after concurrentQueus.sync 6
in concurrentQueus.sync 6
after concurrentQueus.sync 7
in concurrentQueus.sync 7
after concurrentQueus.sync 8
in concurrentQueus.sync 8
after concurrentQueus.sync 9
in concurrentQueus.sync 9
after concurrentQueus.sync 10
in concurrentQueus.sync 10

で、「in」と「after」が同時に処理をされていることが分かります。 

OS X Caption Version 10.11.6でXCODEを8から9にバージョンアップできない。

【問題】

OS X Caption Version 10.11.6+XCODE8を使っていたのですが、

XCODE9にバージョンアップしようとしてAppleStoreからバージョンアップボタンをおしてもバージョンアップできず、ずっとグルグルアイコンを表示していました。

 

【解決方法】

1.XCODE8を削除

 

2.AppleStoreで「Apple」を検索

macOS Sierra」があるのでダウンロード。

(先起動および設定が入るため時間がかかります)

(私が実行した日時では、MACのバージョンが「Version 10.12.6」になりました。)

 

3.AppleStoreでアップデート欄にあるXCODE以外のAppをバージョンアップする。

 

.AppleStoreXCODEをバージョンアップする。

 

これで、無事XCODE9をインストールできました。

XCODE8で昔作ったアプリを開けてみると、エラー多発で改修作業が不安です、、)

リアルタイムエラー表示の対応メモ(XCODE Version 8.0 (8A218a))

エディタエリアで文字入力すると、リアルタイムでエラー表示をする機能があります。

エラー表示の対策メモです。

 

リアルタイムでエラー表示する設定は「メニューバー→File→Project Setting→Show live issues for source code」で指定します。(エディタエリアで文字を入力しないと、最適化されないようですので、設定後エディタエリアで文字を入力してください)

 

①Class 'ViewController' has no initializers

 【エラー例】

    class ViewController: UIViewController {

        var blnStop : Bool;

  【解決方法】

        var blnStop : Bool?;

    ※変数宣言時に値を必ず取る型宣言(nilにならない)になっているにもかかわらずnilで初期化しているためです。型の後ろに?を入れてnilを許可します。

 

 

Invalid redeclaration of ‘変数名(まはた定数名)

 定義済みの変数名(または定数名)を再宣言しようとするとエラーになります。

    【エラー例】

var letsample : Int = 2;

var letsample : Int = 1;

 【解決方法】

var letsample : Int = 2;

var letsample2 : Int = 1;

 

 

 

 

Playgroundを使って配列の動作確認(XCODE Version 8.0 (8A218a))

【準備】

XCODEを起動した画面からです。

①画面下方の「Get started with a playground」をクリック

②そのまま画面右下の「Next」をクリック

  (Name:MyPlayground Platform:iOS)

③そのまま画面右下の「Create」をクリック

画面の味方

右側に各行での状態表示。

下側に実際の出力が表示されます。

変数の動きをつかみやすいので便利です。

【コードを追加する。(コピペでOK)】

/*基本的な調べ方は「arystr.AAA」のようなプログラムを組んだ場合、「Option」キーを押しながら"AAA"部分にマウスカーソルをあわせクリックすれば、簡単な定義情報が表示されます。

  更に詳しい情報が必要であれば、「Swift Standard Library」を選べば別画面で情報を取得できます*/

 

 

/*基本的な調べ方は「arystr.AAA」のようなプログラムを組んだ場合、「Option」キーを押しながら"AAA"部分にマウスカーソルをあわせクリックすれば、簡単な定義情報が表示されます。

  更に詳しい情報が必要であれば、「Swift Standard Library」を選べば別画面で情報を取得できます*/

 

 

//: Playground - noun: a place where people can play

 

import UIKit

 

//はじめの配列1

var arystr : [String] =  ["A","C","B"];

 

//配列の個数

arystr.count;

  //または

     arystr.endIndex;

 

//配列の中身を表示

arystr[0];

// Hint:配列の開始は0から

 

//配列の並び替え

arystr.sort();

 

//すべてのデータを個々に表示1

print("すべてのデータを個々に表示1");

arystr.description;

 

//すべてのデータを個々に表示2(実行結果は下方画面に表示されます)

print("すべてのデータを個々に表示2");

var i : Int;

for i in 1 ... arystr.count

{

    print(arystr[i-1]);

}

 

//すべてのデータを個々に表示3(実行結果は下方画面に表示されます)

print("すべてのデータを個々に表示3");

for i in arystr

{

    print(i);

}

 

//すべてのデータを個々に表示4(実行結果は下方画面に表示されます)

print("すべてのデータを個々に表示4");

let list = arystr.joined(separator: ", ");

print(list);

 

 

//下記はもっと慣れた方の配列操作です。開発現場によっては使わないときもありますのでご注意ください。

 

//キュー(先に入れたデータは先に出す方式、データを入れる行為をエンキュー 出す行為をデキューと言います。)

//arystr.a

arystr = ["A" , "B", "C"];

arystr.description;

arystr.insert("ENTER" , at: 0);

arystr.description;

arystr.removeLast();

arystr.description;

 

//スタック(先に入れたデータは先に出す方式、データを入れる行為をプッシュ、データを出す行為をポップという)

//arystr.a

print("キューの見本");

arystr = ["A" , "B", "C"];

arystr.append("Last");

arystr.description;

arystr.popLast(); //表示と同時に配列の要素を削除します。

arystr.description;

データー保存(超簡単バージョン)(XCODE Version 8.0 (8A218a))

 

let documents = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)

 

        let file = "file.txt"

        let text = "some text"

        

        if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {

            

            let path = dir.appendingPathComponent(file)

            

            //writing

            do {

                try text.write(to: path, atomically: false, encoding: String.Encoding.utf8)

            }

            catch {}

            

            //reading

            do {

                let text2 = try String(contentsOf: path, encoding: String.Encoding.utf8)

                print(“ここから)

                print(text2)

                print(“ここまで”)

            }

            catch {}

便利リンク

下記の情報をすごく参考にさせていただいています。

http://docs.fabo.io/swift/

 

 

【下記英語サイトです。】

SwiftDoc.org http://swiftdoc.org/v3.0/

 リファレンスです。

 

Youtube

 https://www.youtube.com/watch?v=KhqXUi1SF4s

 ViewController間の画面遷移がわかりやすく説明されています。

 

【番外編!】

macOS Sierra のクリーンインストールから Python 開発用の初期設定まで一挙公開 - akiyoko blog

 新しいMACの購入または、何かの事情で再セットアップを行いたい場合。

 このホームページに従って操作していけば、良質な環境開発を作成できます。

 おすすめです!