質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.13%

swift うまく動かない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,719

rabupon

score 19

実現したいこと

画面でIDとパスワードを入力し、URLにてログインチェック。ログインOKは、メッセージを表示後画面遷移、NGは、メッセージを表示のみ

発生している問題

表示された画面(初期値)で、ボタンだけタップすると正常に動作します。(OKの場合もNGの場合も)
「tno」にカーソルを移動した後(特に値も変更しなくても)にボタンをタップすると以下のエラーになります。
webを参考にボタン等の接続を再度作成しましたが、変わりません。

【テキストに移動したとき】
ap_name[7387:347170] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /Users/tsuruta/Library/Developer/CoreSimulator/Devices/D4D69AA4-528C-4203-A8BD-C9006FB5697D/data/Containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
ap_name[7387:347170] [MC] Reading from private effective user settings.
【登録ボタンタップ時】
ap_name[7387:347834] [Assert] Cannot be called with asCopy = NO on non-main thread.
ap_name[7387:347834] [Animation] +[UIView setAnimationsEnabled:] being called from a background thread. Performing any operation from a background thread on UIView or a subclass is not supported and may result in unexpected and insidious behavior. trace=(
 0  UIKitCore          0x000000010cd22932 kFixedAnimationDuration_block_invoke_5 + 107
 1  libdispatch.dylib  0x00000001054fadb5 _dispatch_client_callout + 8
 2  libdispatch.dylib  0x00000001054fc83d _dispatch_once_callout + 66
 3  UIKitCore          0x000000010cd228c5 +[UIView(Animation) setAnimationsEnabled:] + 76
 4  UIKitCore          0x000000010cd22a13 +[UIView(Animation) performWithoutAnimation:] + 84
 5  UIKitCore          0x000000010c6ed51b +[UIRemoteKeyboardWindow remoteKeyboardWindowForScreen:create:] + 418
 6  UIKitCore          0x000000010c6d6a3a -[UIPeripheralHost(UIKitInternal) inputViews] + 100
 7  UIKitCore          0x000000010c6dbf46 -[UIPeripheralHost(UIKitInternal) _preserveInputViewsWithId:animated:reset:] + 167
 8  UIKitCore          0x000000010c271b4d -[UIViewController _presentViewController:modalSourceViewController:presentationController:animationController:interactionController:completion:] + 1211
 9  UIKitCore          0x000000010c27385a -[UIViewController _presentViewController:withAnimationController:completion:] + 4608
 10 UIKitCore          0x000000010c27611b __63-[UIViewController _presentViewController:animated:completion:]_block_invoke + 98
 11 UIKitCore          0x000000010c276633 -[UIViewController _performCoordinatedPresentOrDismiss:animated:] + 511
 12 UIKitCore          0x000000010c276082 -[UIViewController _presentViewController:animated:completion:] + 172
 13 UIKitCore          0x000000010c2762e0 -[UIViewController presentViewController:animated:completion:] + 150
 14 ap_name            0x00000001007d995f $s11ap_name11ViewAccountC14b_entry_tappedyyypFy10Foundation4DataVSg_So13NSURLResponseCSgs5Error_pSgtcfU_ + 3407
 15 ap_name            0x00000001007da05d $s11ap_name11ViewAccountC14b_entry_tappedyyypFy10Foundation4DataVSg_So13NSURLResponseCSgs5Error_pSgtcfU_TA + 13
 16 ap_name            0x00000001007a9ab6 $s10Foundation4DataVSgSo13NSURLResponseCSgs5Error_pSgIegggg_So6NSDataCSgAGSo7NSErrorCSgIeyByyy_TR + 294
 17 CFNetwork          0x0000000105c4b178 __75-[__NSURLSessionLocal taskForClass:request:uploadFile:bodyData:completion:]_block_invoke + 19
 18 CFNetwork          0x0000000105c61c56 __49-[__NSCFLocalSessionTask _task_onqueue_didFinish]_block_invoke + 172
 19 Foundation         0x0000000101367412 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 7
 20 Foundation         0x000000010136731a -[NSBlockOperation main] + 68
 21 Foundation         0x00000001013641f4 -[__NSOperationInternal _start:] + 688
 22 Foundation         0x0000000101369f5b __NSOQSchedule_f + 227
 23 libdispatch.dylib  0x00000001054f9d7f _dispatch_call_block_and_release + 12
 24 libdispatch.dylib  0x00000001054fadb5 _dispatch_client_callout + 8
 25 libdispatch.dylib  0x00000001054fdc95 _dispatch_continuation_pop + 552
 26 libdispatch.dylib  0x00000001054fd08f _dispatch_async_redirect_invoke + 849
 27 libdispatch.dylib  0x000000010550b632 _dispatch_root_queue_drain + 351
 28 libdispatch.dylib  0x000000010550bfca _dispatch_worker_thread2 + 130
 29 libsystem_pthread.dylib  0x00000001058e36b3 _pthread_wqthread + 583
 30 libsystem_pthread.dylib  0x00000001058e33fd start_wqthread + 13
)
ap_name[7387:347834] *** Assertion failure in -[UIKeyboardTaskQueue waitUntilAllTasksAreFinished], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKitCore_Sim/UIKit-3698.103.12/Keyboard/UIKeyboardTaskQueue.m:453
ap_name[7387:347834] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread.'
*** First throw call stack:
(
 0  CoreFoundation    0x00000001028b16fb __exceptionPreprocess + 331
 1  libobjc.A.dylib   0x00000001018b2ac5 objc_exception_throw + 48
 2  CoreFoundation    0x00000001028b1482 +[NSException raise:format:arguments:] + 98
 3  Foundation        0x0000000101300927 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 194
 4  UIKitCore         0x000000010c6c6b0d -[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] + 375
 5  UIKitCore         0x000000010c67fbda -[UIKeyboardImpl setDelegate:force:] + 1937
 6  UIKitCore         0x000000010c6d2b3f -[UIPeripheralHost(UIKitInternal) _reloadInputViewsForResponder:] + 1539
 7  UIKitCore         0x000000010c6dc0d2 -[UIPeripheralHost(UIKitInternal) _preserveInputViewsWithId:animated:reset:] + 563
 8  UIKitCore         0x000000010c271b4d -[UIViewController _presentViewController:modalSourceViewController:presentationController:animationController:interactionController:completion:] + 1211
 9  UIKitCore         0x000000010c27385a -[UIViewController _presentViewController:withAnimationController:completion:] + 4608
 10 UIKitCore         0x000000010c27611b __63-[UIViewController _presentViewController:animated:completion:]_block_invoke + 98
 11 UIKitCore         0x000000010c276633 -[UIViewController _performCoordinatedPresentOrDismiss:animated:] + 511
 12 UIKitCore         0x000000010c276082 -[UIViewController _presentViewController:animated:completion:] + 172
 13 UIKitCore         0x000000010c2762e0 -[UIViewController presentViewController:animated:completion:] + 150
 14 ap_name           0x00000001007d995f $s11ap_name11ViewAccountC14b_entry_tappedyyypFy10Foundation4DataVSg_So13NSURLResponseCSgs5Error_pSgtcfU_ + 3407
 15 ap_name           0x00000001007da05d $s11ap_name11ViewAccountC14b_entry_tappedyyypFy10Foundation4DataVSg_So13NSURLResponseCSgs5Error_pSgtcfU_TA + 13
 16 ap_name           0x00000001007a9ab6 $s10Foundation4DataVSgSo13NSURLResponseCSgs5Error_pSgIegggg_So6NSDataCSgAGSo7NSErrorCSgIeyByyy_TR + 294
 17 CFNetwork         0x0000000105c4b178 __75-[__NSURLSessionLocal taskForClass:request:uploadFile:bodyData:completion:]_block_invoke + 19
 18 CFNetwork         0x0000000105c61c56 __49-[__NSCFLocalSessionTask _task_onqueue_didFinish]_block_invoke + 172
 19 Foundation        0x0000000101367412 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 7
 20 Foundation        0x000000010136731a -[NSBlockOperation main] + 68
 21 Foundation        0x00000001013641f4 -[__NSOperationInternal _start:] + 688
 22 Foundation        0x0000000101369f5b __NSOQSchedule_f + 227
 23 libdispatch.dylib  0x00000001054f9d7f _dispatch_call_block_and_release + 12
 24 libdispatch.dylib  0x00000001054fadb5 _dispatch_client_callout + 8
 25 libdispatch.dylib  0x00000001054fdc95 _dispatch_continuation_pop + 552
 26 libdispatch.dylib  0x00000001054fd08f _dispatch_async_redirect_invoke + 849
 27 libdispatch.dylib  0x000000010550b632 _dispatch_root_queue_drain + 351
 28 libdispatch.dylib  0x000000010550bfca _dispatch_worker_thread2 + 130
 29 libsystem_pthread.dylib  0x00000001058e36b3 _pthread_wqthread + 583
 30 libsystem_pthread.dylib  0x00000001058e33fd start_wqthread + 13
)
libc++abi.dylib: terminating with uncaught exception of type NSException


ボタン

該当のソースコード

import UIKit
class ViewAccount: UIViewController, UITextFieldDelegate {
  var seek_url:String?
  @IBOutlet weak var tno: UITextField!
  @IBOutlet weak var tpass: UITextField!
  @IBOutlet weak var b_entry: UIButton!
   override func viewDidLoad() {
    super.viewDidLoad()
    tno.delegate = self
    tpass.delegate = self
    tno.text = "aaa"
    tpass.text = "pass"
  }
  // 登録ボタンクリック時
  @IBAction func b_entry_tapped(_ sender: Any) {
    seek_url = app.main_url + "chk.php?id=" + tno.text!+ "&pass=" + tpass.text!
    let url = URL(string: seek_url!)!
    let task = URLSession.shared.dataTask(with: url){ data, response, error in
      //一部省略
      var flg:Bool=false
      var status=0
      if let httpResponse = response as? HTTPURLResponse {
        status = httpResponse.statusCode
      }
      var msg = "";
      if status == 200{
        let myData:NSString = NSString(data: data! as Data, encoding: String.Encoding.utf8.rawValue)!
        switch myData {
        case "OK_READY1":
          msg="okay"
          flg=true
          break
        default:
          msg="NG"
          break
        }
      }else{
        msg="error"
      }
      let alert = UIAlertController(title: "確認", message: msg, preferredStyle: UIAlertControllerStyle.alert)
      let okayButton = UIAlertAction(title: "OK", style: UIAlertActionStyle.default,
          handler:{
          (action: UIAlertAction!) -> Void in
          if(flg == true){
            var nex = UIViewController()
            var selfStoryboard: UIStoryboard?
            selfStoryboard = self.storyboard
            nex = selfStoryboard!.instantiateViewController(withIdentifier: "Conf") as UIViewController
            nex.modalTransitionStyle = UIModalTransitionStyle.crossDissolve
            self.present(nex, animated: true, completion: nil)
          }
      })
      alert.addAction(okayButton)
      self.present(alert, animated: true, completion: nil)
     }
    task.resume()
  }
}

バージョンなど

Xcode10です。もともとXcode7で作成していたものです

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • MasakiHori

    2019/05/23 08:54

    表示されているエラーはすべて記載してください

    キャンセル

  • fuzzball

    2019/05/23 09:24

    コードは ``` で囲って下さい。 https://teratail.com/help#about-markdown

    キャンセル

  • takabosoft

    2019/05/23 11:08

    若干構文が古いので使っているxcodeのバージョンも記載してください。

    キャンセル

  • rabupon

    2019/05/23 13:09

    xcode10です。
    もともとxcode7で作成していたものを、変更しました

    キャンセル

回答 1

checkベストアンサー

+1

self.present(alert, animated: true, completion: nil)のところをメインスレッドで実行するようにしてください。

DispatchQueue.main.async {
    self.present(alert, animated: true, completion: nil)
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/23 15:04

    ありがとうございます。
    まさにその通りでした。
    でも基本的なことなのでしょうが、
    上記のように記述することによってメインスレッドで実行されるようになったわけですが、
    このように記述していない場合、どこで実行されているのでしょうか?

    キャンセル

  • 2019/05/23 15:08

    基本AlertAction内での動作では上記のように記述した方がよろしいのでしょうか。
    他のところでも利用しているのですが、まだエラーになっておりません

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る