Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
该应用程序在模拟器(Xcode 7.1.1)中运行良好,但在iOS设备上无法运行_Ios_Swift - Fatal编程技术网

该应用程序在模拟器(Xcode 7.1.1)中运行良好,但在iOS设备上无法运行

该应用程序在模拟器(Xcode 7.1.1)中运行良好,但在iOS设备上无法运行,ios,swift,Ios,Swift,我有一个应用程序,可以计算两个日期之间的差异。它可以在模拟器中正常工作,但不能在iOS设备(使用iOS 9的iPad)上工作 当我按下iPad上的“计算差异”按钮时,什么都没发生。在Xcode的调试区域,我收到以下错误消息: 2015-11-16 08:33:32.246日期到日期计算器[369:64113]0x17eb95e0>-更改仅转换层中的特性masksToBounds将>无效 2015-11-16 08:33:32.250 日期到日期计算器[369:64113]-更改>仅转换层中的属性

我有一个应用程序,可以计算两个日期之间的差异。它可以在模拟器中正常工作,但不能在iOS设备(使用iOS 9的iPad)上工作

当我按下iPad上的“计算差异”按钮时,什么都没发生。在Xcode的调试区域,我收到以下错误消息:

2015-11-16 08:33:32.246日期到日期计算器[369:64113]
0x17eb95e0>
-更改仅转换层中的特性masksToBounds将>无效 2015-11-16 08:33:32.250

日期到日期计算器[369:64113]
-更改>仅转换层中的属性masksToBounds将无效 2015-11-16 08:33:32.251

日期到日期计算器[369:64113]
-更改>仅转换层中的属性masksToBounds将无效

我搜索了这么多,找不到解决方案

有人有什么建议吗

谢谢

请在下面查找视图控制器代码:

import UIKit
类ViewController:UIViewController{

@IBOutlet weak var startDateTextField: UITextField!
@IBOutlet weak var endDateTextField: UITextField!
@IBOutlet weak var resultNumberOfDays: UILabel!
@IBOutlet weak var resultWeeksAndDays: UILabel!



override func viewDidLoad() {
    super.viewDidLoad()

    self.view.backgroundColor = UIColor(red: 210/255, green: 213/255, blue: 220/255, alpha: 1.0)

    let toolBar = UIToolbar(frame: CGRectMake(0, self.view.frame.size.height/6, self.view.frame.size.width, 40.0))

    toolBar.layer.position = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height-20.0)

    toolBar.barStyle = UIBarStyle.BlackTranslucent

    toolBar.tintColor = UIColor.whiteColor()

    UIToolbar.appearance().barTintColor = UIColor(red: 0/255, green: 0/255, blue: 205/255, alpha: 1.0)

    let todayBtn = UIBarButtonItem(title: "Today", style: UIBarButtonItemStyle.Plain, target: self, action: "tappedToolBarBtn:")

    let okBarBtn = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "donePressed:")

    // let okBarBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: "donePressed:")

    let flexSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: self, action: nil)

    let label = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width / 3, height: self.view.frame.size.height))

    label.font = UIFont(name: "Helvetica Neue", size: 13)

    label.backgroundColor = UIColor.clearColor()

    label.textColor = UIColor.whiteColor()

    label.text = "Select a Start Date"

    label.textAlignment = NSTextAlignment.Center

    let textBtn = UIBarButtonItem(customView: label)

    toolBar.setItems([todayBtn,flexSpace,textBtn,flexSpace,okBarBtn], animated: true)

    startDateTextField.inputAccessoryView = toolBar


    let toolBar2 = UIToolbar(frame: CGRectMake(0, self.view.frame.size.height/6, self.view.frame.size.width, 40.0))

    toolBar2.layer.position = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height-20.0)

    toolBar2.barStyle = UIBarStyle.BlackTranslucent

    toolBar2.tintColor = UIColor.whiteColor()

    UIToolbar.appearance().barTintColor = UIColor(red: 0/255, green: 0/255, blue: 205/255, alpha: 1.0)

    let todayBtn2 = UIBarButtonItem(title: "Today", style: UIBarButtonItemStyle.Plain, target: self, action: "secondTappedToolBarBtn:")

    let okBarBtn2 = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "secondDonePressed:")

    // let okBarBtn2 = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: "secondDonePressed:")

    let flexSpace2 = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: self, action: nil)

    let label2 = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width / 3, height: self.view.frame.size.height))

    label2.font = UIFont(name: "Helvetica Neue", size: 13)

    label2.backgroundColor = UIColor.clearColor()

    label2.textColor = UIColor.whiteColor()

    label2.text = "Select an End Date"

    label2.textAlignment = NSTextAlignment.Center

    let textBtn2 = UIBarButtonItem(customView: label2)

    toolBar2.setItems([todayBtn2,flexSpace2,textBtn2,flexSpace2,okBarBtn2], animated: true)

     endDateTextField.inputAccessoryView = toolBar2

    // Do any additional setup after loading the view, typically from a nib.
}



override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}




func donePressed(sender: UIBarButtonItem) {

    startDateTextField.resignFirstResponder()

}


func secondDonePressed(sender: UIBarButtonItem) {

    endDateTextField.resignFirstResponder()

}




func tappedToolBarBtn(sender: UIBarButtonItem) {

    let dateformatter = NSDateFormatter()
    dateformatter.dateStyle = NSDateFormatterStyle.MediumStyle
    dateformatter.timeStyle = NSDateFormatterStyle.NoStyle
    startDateTextField.text = dateformatter.stringFromDate(NSDate())
    startDateTextField.resignFirstResponder()
}


func secondTappedToolBarBtn(sender: UIBarButtonItem) {

    let dateformatter = NSDateFormatter()
    dateformatter.dateStyle = NSDateFormatterStyle.MediumStyle
    dateformatter.timeStyle = NSDateFormatterStyle.NoStyle
    endDateTextField.text = dateformatter.stringFromDate(NSDate())
    endDateTextField.resignFirstResponder()
}



override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    self.view.endEditing(true)
}


@IBAction func textFieldEditing(sender: UITextField) {
    let datePickerView: UIDatePicker = UIDatePicker()
    datePickerView.datePickerMode = UIDatePickerMode.Date
    sender.inputView = datePickerView
    datePickerView.addTarget(self, action: Selector("datePickerValueChanged:"), forControlEvents: UIControlEvents.ValueChanged)

}



@IBAction func secondTextFieldEditing(sender: UITextField) {
    let datePickerView: UIDatePicker = UIDatePicker()
    datePickerView.datePickerMode = UIDatePickerMode.Date
    sender.inputView = datePickerView
    datePickerView.addTarget(self, action: Selector("secondDatePickerValueChanged:"), forControlEvents: UIControlEvents.ValueChanged)

}



func datePickerValueChanged(sender: UIDatePicker) {
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle
    dateFormatter.timeStyle = NSDateFormatterStyle.NoStyle
    startDateTextField.text = dateFormatter.stringFromDate(sender.date)

}



func secondDatePickerValueChanged(sender: UIDatePicker) {
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle
        dateFormatter.timeStyle = NSDateFormatterStyle.NoStyle
        endDateTextField.text = dateFormatter.stringFromDate(sender.date)

}


@IBAction func calculateDays(sender: UIButton) {

    if startDateTextField.text! == "" || endDateTextField! == "" {

        let alert2 = UIAlertController(title: "Oops!", message: "Please Select a Start Date!", preferredStyle: UIAlertControllerStyle.Alert)
        alert2.addAction(UIAlertAction(title: "Close", style: UIAlertActionStyle.Default, handler: nil))
        self.presentViewController(alert2, animated: true, completion: nil)


    }
    else {

        let start = String(startDateTextField.text!)
        let end = String(endDateTextField.text!)
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "MM-dd-yyyy"


        guard let startDate = dateFormatter.dateFromString(start), endDate = dateFormatter.dateFromString(end) else {
            // You don't have dates, show error(print("error"), do no nothing - your choice.
            return
        }


        // let startDate:NSDate = dateFormatter.dateFromString(start)!
        // let endDate:NSDate = dateFormatter.dateFromString(end)!
        let calendar = NSCalendar.currentCalendar()
        let components = calendar.components([.Day], fromDate: startDate, toDate: endDate, options: [])
        let secondNewString = "\(components.day) days"
        resultNumberOfDays.text = secondNewString

    }

}


@IBAction func calculateWeeksAndDays(sender: UIButton) {

    if startDateTextField.text! == "" || endDateTextField! == "" {

        let alert2 = UIAlertController(title: "Oops!", message: "Please Select an End Date!", preferredStyle: UIAlertControllerStyle.Alert)
        alert2.addAction(UIAlertAction(title: "Close", style: UIAlertActionStyle.Default, handler: nil))
        self.presentViewController(alert2, animated: true, completion: nil)
    }
    else {

    let start = String(startDateTextField.text!)
    let end = String(endDateTextField.text!)
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "MM-dd-yyyy"



        guard let startDate = dateFormatter.dateFromString(start), endDate = dateFormatter.dateFromString(end) else {
            // You don't have dates, show error(print("error"), do no nothing - your choice.
            return
 }


    // let startDate:NSDate = dateFormatter.dateFromString(start)!
    // let endDate:NSDate = dateFormatter.dateFromString(end)!
    let calendar = NSCalendar.currentCalendar()
    let components = calendar.components([.Day], fromDate: startDate, toDate: endDate, options: [])
    let days = components.day
    let weeks = components.day / 7
    let weeksanddays = days % 7
    let newString = "\(weeks) weeks + \(weeksanddays) days"
    resultWeeksAndDays.text = newString
}

}

我敢打赌,您的代码,就目前情况而言,即使在模拟器中也不能“正常工作”。例如,当我第一次点击文本字段时,日期选择器不会显示。我必须点击背景屏幕以辞职FirstResponder,然后再次点击文本字段以显示日期选择器


问题在于,在文本字段成为第一响应者之前,您不会实例化日期选择器并将其连接到文本字段,您需要在它成为第一响应者之前执行此操作。(例如在viewDidLoad方法中。)

您所要做的就是启动一个iPad模拟器,然后按(CommandKey)。您的问题没有提供问题的任何细节。你至少应该提供你的计算方法的解释,或者,在问题中嵌入方法的代码,以便so可以帮助你。是的,我不认为控制台发出的警告消息与您的问题有关。请看这个问题:请提供信息,您使用的是哪种模拟器(5s、4s、ipad等)您的设计与ipad兼容吗?谢谢,我刚刚在我的原始问题中添加了视图控制器代码。如果有人能看到我哪里出了错,我将不胜感激。PS.Am使用Xcode 7.1.1,iPad使用iOS 9.1
@IBAction func resetLabels(sender: AnyObject) {

    resultNumberOfDays.text = ""
    resultWeeksAndDays.text = ""


}