2015-06-28 2 views
0

Я охотился вокруг, но мне трудно найти актуальную актуальную информацию, касающуюся простого сравнения даты года. Большинство ответов вокруг googlesphere немного более консольный стороне, а не стороне приложения ...Сравнение данных IOS Swift

Я получил немного кода написал с помощью некоторых учебников (это мое первое приложение ИОС)

Моя проблема заключается в том, что integarValue не работает с NSDate и вызывает ошибку. С трудом получить NSDateTimeInterval работать в мою пользу также ... Вся помощь очень ценится!

//grab the date needed 
    var chosenDate = self.datePick.date 

    //create todays date variable for math 
    var todaysDate:NSDate = NSDate() 

    // create a formatter 
    var formatter = NSDateFormatter() 
    formatter.dateFormat = "yyyy" 

    //time interval since now 


    //grab the diff in years and display amount of years difference 
    let day = formatter.stringFromDate(todaysDate.integarValue) - formatter.stringFromDate(chosenDate.integarValue) 
    let result = "\(day)" 

    //create alert controller 
    let myAlert = UIAlertController(title: result, message: nil, preferredStyle: UIAlertControllerStyle.Alert) 


    //add button to alert 
    myAlert.addAction(UIAlertAction(title: "Close", style: UIAlertActionStyle.Default, handler: nil)) 
    //show alert 
    self.presentViewController(myAlert, animated: true, completion: nil) 
} 

ответ

2
let yearsDifference = NSCalendar.currentCalendar().components(.CalendarUnitYear, fromDate: datePick.date, toDate: NSDate(), options: nil).year 
+0

Здравствуйте, я попробовал ваш вариант, и он был создан без проблем, но прерывается, когда он вызывает код для кнопки, чтобы выполнить математику. пусть yearsDif = NSCalendar.currentCalendar() компоненты. (.CalendarUnitYear, FromDate: datePick.date, Todate: NSDate(), опции: ноль) .year // Создать оповещение контроллер пусть myAlert = UIAlertController (название: " По результатам: ", сообщение: String (yearsDif), preferredStyle: UIAlertControllerStyle.Alert) – atxnewb

+0

try yearsDifference.description или" \\ (yearsDifference) " –

+1

Я подошел и имел точку останова в своем приложении, вызвав проблему. Все хорошо спасибо !!!!!!!!!!! – atxnewb

1
  1. орфографии

    INTEG е г, не Integ в г,

  2. Используйте NSDate в -stringFromDate

    -stringFromDate принимает NSDate в качестве аргумента, так что ваш код должен выглядеть следующим образом: formatter.stringFromDate(todaysDate)

  3. Преобразование строки обратно в целое число, прежде чем вычитание

    stringFromDate возвращает String, и не существует определение не по умолчанию для двоичного вычитания между String объектами, поэтому вы должны использовать toInt(), а затем разворачивать значение с !, прежде чем вы вычесть

    todaysDateString = formatter.stringFromDate(todaysDate) 
    println(todaysDateString-1) // This will give you an error 
    todaysDateInteger = todaysDateString.toInt()! 
    println(todaysDateInteger-1) // This works 
    

Собираем все вместе

//grab the diff in years and display amount of years difference 
let day = formatter.stringFromDate(todaysDate).toInt()! - formatter.stringFromDate(chosenDate).toInt()! 

Это то, что строка кода должна выглядеть.

+0

Не кажется integerValue - метод, который будет работать для меня. : \ Я продолжаю получать "string" не имеет действительного члена с именем integerValue – atxnewb

+0

Спасибо! Я скоро сделаю это. Старался не путаться с решением вышеупомянутого плаката, а хе-хе. – atxnewb

Смежные вопросы