2016-08-12 10 views
-1

텍스트 필드의 불량 데이터를 테스트하고 누락되었거나 잘못된 데이터에 대한 경고를 표시하려고하면 경고가 표시되지 않습니다. 하지만 경고가있는 viewDidLoad 기능 여기경고 iOS swift

에 표시 할 얻을 수있는 것은 코드

import UIKit 
import CoreData 

class SellViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { 
@IBOutlet weak var customer: UITextField! 
@IBOutlet weak var bales: UITextField! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let alert = UIAlertController(title: "Hey", message: "@ SellViewController viewDidLoad ", preferredStyle: UIAlertControllerStyle.Alert) 
    alert.addAction(UIAlertAction(title: "Working!!", style: UIAlertActionStyle.Default, handler: nil)) 
    self.presentViewController(alert, animated: true, completion: nil) 

func checkDataInput(){ 

    print("checking data input customer.text \(customer.text)") 
    print("checking data input bales.text \(bales.text)") 

    if (customer.text!.isEmpty) { 
     customer.text = "REQUIRED" 
     missingCustomer() 
    } 
if (bales.text!.isEmpty){ 
     availableAlert() 
    }else{ 
     newQuantity = Int(bales.text!)! 
    } 

func availableAlert() { 
    print(" at availableAlert") 

    let alert = UIAlertController(title: "Hey", message: "@ SellViewController func missingValues ", preferredStyle: UIAlertControllerStyle.Alert) 
    alert.addAction(UIAlertAction(title: "Working!!", style: UIAlertActionStyle.Default, handler: nil)) 
    self.presentViewController(alert, animated: true, completion: nil) 


func missingCustomer() { 
    print(" at missingCustomer") 
    let alert = UIAlertController(title: "Hey", message: "@ SellViewController func missingCustomer ", preferredStyle: UIAlertControllerStyle.Alert) 
    alert.addAction(UIAlertAction(title: "Working!!", style: UIAlertActionStyle.Default, handler: nil)) 
    self.presentViewController(alert, animated: true, completion: nil) 
    } 

이있는 viewDidLoad에서 경고를 표시하지만 누락 된 데이터 아니오 경고를합니다. 누락 된 데이터가있을 때의 print 문은 다음과 같이 반환됩니다. 선택 ("") customer.text

검사 데이터 입력 (") 선택 bales.text 데이터 입력을 확인
"availableAlert
치명적인 오류에 missingCustomer
에서
는 : 예기치 옵션 값

언 래핑 동안 nil을 찾았

사용자가 경고를 받았을 때 사용자가 응답을 수정할 수 없기 때문에 치명적인 오류가 발생합니다.

내가 뭘 잘못하고 있니? 내 missingData 함수가 트리거되고 항목을 수정할 수있을 때 즉시 경고가 표시되지 않아야합니까?

+1

문제가 발생한 이후로 작동하지 않는 관련 코드를 게시하지 않은 이유는 무엇입니까? – rmaddy

+0

'missingData' 함수가 주 스레드에서 실행됩니까? 그렇지 않다면, Swift 2.0에서'DispatchQueue.main.async {/ * 경고 표시 * /}'(또는'dispatch_async (dispatch_get_main_queue()) {/ * 경고 표시 * /}'를 사용하십시오. – Palle

답변

0

이것은 스레딩 문제와 같습니다. 데이터 평가 코드는 주 스레드에서 실행될 가능성이 큽니다 (게시하지 않았으므로 확실하게 말할 수 없습니다). 따라서 UI 작업을 시도 할 때이 경우 경고를 표시하면 실행되지 않습니다. 이 문제를 해결하려면 누락 된 데이터 함수에서 다음 코드를 시도하십시오.

let alert = UIAlertController(title: "Hey", message: "@ SellViewController viewDidLoad ", preferredStyle: UIAlertControllerStyle.Alert) 
alert.addAction(UIAlertAction(title: "Working!!", style: UIAlertActionStyle.Default, handler: nil)) 
dispatch_async(dispatch_get_main_queue()) { 
    self.presentViewController(alert, animated: true, completion: nil) 
} 
+0

나는 당신의 제안을 시도했습니다. . 불행히도 나는 같은 결과를 얻는다. 관련 코드,보기 컨트롤러 및 여러 기능을 포함하도록 게시물을 편집했습니다. 다른 뭔가 잘못하고있을거야. –