2017-10-17 7 views
-2

0902과 같은 다른 클래스에 int를 전달하려고하면 전송 된 결과에서 첫 번째 0이 손실됩니다. 이것은 0이 진행될 때만 발생합니다.스위프트가 0으로 끝납니다.

또한 추가하려고 시도했지만 작동하지 않는 기능이 있습니다. Swift에서 선행 제로 Int를 유지하지 않는 이유가 있습니까?

다른 클래스에 0902의 값을 보내면 나중에 표시되는 값이 902이고 완전히 혼동됩니다.

func convertToTime(_ value: Int) -> String { 
     print(value) // 902 
     var text = String(format: "%02d", value) 
     text.insert(":", at: text.index(text.startIndex, offsetBy: +2)) 
     return text 
    } 
+3

0을 유지해야하는 이유는이 형식에서 Int에 대해 아무 것도 의미하지 않습니다. –

+5

선행 0은 가치가 없으며 숫자이기 때문에 int이므로 선행 0을 잃게됩니다. 선행 0을 가지려는 경우 대신 문자열로 변환 해보십시오. –

+2

@ Lu_가 맞습니다. 0은 Int를 의미하지 않습니다. 원한다면 정수가 아닌 문자열로 선언 할 수 있습니다. – luckyShubhra

답변

0
는 문자열로 함수 인수를 변경

:

func convertToTime(_ value: String) -> String { 
    print(value) // prints "0902" 
    var text = value 
    text.insert(":", at: text.index(text.startIndex, offsetBy: +2)) 
    return text 
} 

convertToTime("0902") // prints "09:02" 
-1
func convert(integerToTimeString int: Int) -> String{ 
    var string = "\(int)" 
    if string.count > 3{ 
     string.insert(":", at: string.index(string.startIndex, offsetBy: String.IndexDistance(2))) 
     return string 
    } 
    string.insert("0", at: string.startIndex) 
    string.insert(":", at: string.index(string.startIndex, offsetBy: String.IndexDistance(2))) 
    return string 
} 

그것은 먼저 문자열로 지능을 변환하고 확인이 코드 대신

을 시도 할 경우 추가하기 전에 그 4 자은 " : "

1

여기서 문제는"0902 "값의 유형을 정의하는 방법입니다.

이 실제로입니까?

사실 숫자 값만 포함하는 String입니까?

예를 들어 전화 번호가 같습니다. 그게 번호인가요? 또는 문자열?

함께 추가 하시겠습니까? 아니면 그들을 곱하면 될까요? 그렇지 않다면 String으로 만드십시오.

일단 문자열로 만들면 문자열의 일부이므로 맨 앞의 0은 더 이상 문제가되지 않습니다. 숫자로 만들 자마자 앞에 0이 0902 == 902으로 존재한다는 것은 의미가 없습니다.

추가

이 다시 한번 ... 그것도 문자열입니다했다가 있습니까? 너 여기서 시간을 다뤄? 확실하게 NSDate 객체를 사용해야합니까?

문제는 여전히 동일합니다. 유형을 올바르게 정의했는지 확인하십시오.

"0902"가 실제로 무엇인지 결정합니다. 그런 다음 올바른 유형으로 만드십시오.

숫자, 문자열 또는 날짜 중 어느 것이어야합니다.

올바른 유형을 사용하면 올바른 형식과 기능 및 속성을 얻을 수 있습니다.