2017-10-08 8 views
-2
I라는 오류가 무엇입니까

: 라인오류 : 이진 연산자 '<='는 'Int'유형의 피연산자에 적용 할 수 없습니다. 및 '내부'

Binary operator '<=' cannot be applied to operands of type 'Int?' and 'Int'

: if differenceOfDate.second <= 0 사람이 도움을 주시기 바랍니다 수 있습니다!

let fromDate = Date(timeIntervalSince1970: TimeInterval(truncating: posts[indexPath.row].postDate)) 
    let toDate = Date() 
    var calendar = Calendar.current 
    let components = Set<Calendar.Component>([.second, .minute, .hour, .day, .weekOfMonth, .month]) 
    let differenceOfDate = Calendar.current.dateComponents(components, from: fromDate, to: toDate) 

    if differenceOfDate.second <= 0 { 
     cell.DateLbl.text = "now" 
    }else if differenceOfDate.second > 0 && differenceOfDate.minute == 0 { 
     cell.DateLbl.text = "\(differenceOfDate.second)s." 
    } 
    else if differenceOfDate.minute > 0 && differenceOfDate.hour == 0 { 
     cell.DateLbl.text = "\(differenceOfDate.minute)m." 
    } 
    else if differenceOfDate.hour > 0 && differenceOfDate.day == 0 { 
     cell.DateLbl.text = "\(differenceOfDate.hour)h." 
    } 
    else if differenceOfDate.day > 0 && differenceOfDate.weekOfMonth == 0 { 
     cell.DateLbl.text = "\(differenceOfDate.day)d." 
    } 
    else if differenceOfDate.weekOfMonth > 0 && differenceOfDate.month == 0 { 
     cell.DateLbl.text = "\(differenceOfDate.weekOfMonth)w." 
    } 
    else if differenceOfDate.month > 0 { 
     cell.DateLbl.text = "\(differenceOfDate.month)m." 
    } 
+1

문서 https://developer.apple을 조회하세요 .com/documentation/foundation/calendar/2292887-datecomponents를 사용하면'NSDate'가 아닌'Date' 유형의 매개 변수를 사용하게됩니다. –

+0

관련 : https://stackoverflow.com/questions/41198803/how-to-convert-from-nsdatetimeintervals since1970-to-nsdate. –

+0

"Date"를 사용하는 것보다 "이진 연산자 '<='를 'Int'유형의 피연산자에 적용 할 수 없습니다. and Int 'if line if differenceOfDate.second <= 0' – Danjhi

답변

0

당신이 조사해야 할 문서는 "DateComponents"데이터 유형에 대한 하나이며, 당신이 선택적 항목에 익숙하지 않은 경우, 당신은뿐만 아니라 선택적 항목에 읽을 필요가있다.

간단히 말해서 DateComponents 데이터 형식에 모든 구성 요소의 값이 포함되지 않을 수도 있으므로 각 멤버는 선택적인 Int?입니다. 즉, 0을 포함 할 수 있습니다.

이 때문에 날짜 구성 요소를 비 선택적 값과 직접 비교할 수 없습니다. 당신은 그들을 "풀어 버려야"합니다.

당신은 항상 .second 구성 요소가 될 것이라고 100 % 확신하는 경우, 느낌표를 추가하여 값을 풀다 강제 할 수

if differenceOfDate.second! <= 0