2017-11-27 20 views
0

int를 매개 변수로 사용하여 작업을 전달하려고하면 (이 크기가 크지는 않지만) 신속한 컴파일러가이 오류 메시지를 표시하고 몇 가지 방법을 시도해 보았습니다. 당신은 해결하기 위해 두 가지 문제가'Int64?'유형의 값을 변환 할 수 없습니다. 예상 인수 형 'Int'에

Job.updateJobStatus(token: tok, jobId: job?.id, status:JobSatus.canceled) { (result, error) in 
     if result != nil 
     { 

     } 
     else if error != nil 
     { 

     } 
    } 
+1

시도해 보셨습니까? https://stackoverflow.com/a/32793656/8236481 – Oxthor

+0

현재로서는 선택적 문제를 무시하고 두 ID 데이터 형식이 다른 이유는 무엇입니까? – rmaddy

+1

관련 : https://stackoverflow.com/questions/32793460/can-i-cast-int64-directly-into-int –

답변

0

이는

스위프트 3 안전하게 다른 하나의 정수 형식을 변환 할 failable 초기화를 소개 https://stackoverflow.com/a/32793656/8236481 관련이있다. init? (정확히 :)를 사용하면 한 유형을 전달하여 다른 유형을 초기화 할 수 있으며 초기화가 실패하면 nil을 리턴합니다. 반환되는 값은 선택 사항이며 일반적인 방법으로 언 래핑해야합니다.

0

:

Cannot convert value of type 'Int64?' to expected argument type 'Int' 

내 코드 : 그것은,하지만 어떤 성공이 없었다. 먼저 job을 선택 사항으로 처리해야합니다. 그런 다음 job.idjobId 매개 변수와 다른 데이터 유형으로 처리해야합니다.

guard let job = job else { return } 

Job.updateJobStatus(token: tok, jobId: Int(job.id), status:JobSatus.canceled) { (result, error) in 
    if let result = result { 
    } else if let error = error { 
    } 
} 

아니면 기본 값으로 폴백 할 수는 :

Job.updateJobStatus(token: tok, jobId: Int(job?.id ?? 0), status:JobSatus.canceled) { (result, error) in 
    if let result = result { 
    } else if let error = error { 
    } 
} 

당신이 정말로 단지 jobId 매개 변수를 확인해야합니다 있습니다

당신은 선택 사양 인 문제에 대한 많은 옵션을 가지고 id 속성과 동일한 데이터 형식입니다. 값이 너무 커서 변환 할 수없는 경우 Int64에서 Int으로의 변환이 실패 할 수 있습니다.