2016-12-02 3 views
0

JSON 값으로 생성 된 NSDate 객체가있는 클래스를 만들었습니다. 문자열 값은 2016-12-02T13:51:23+01:00과 같습니다. 대부분의 경우 문자열이 성공적으로 변환되고 날짜 객체가 만들어 지지만 선택적 값에 대해 unwrap을 강제 실행하는 동안 가끔 응용 프로그램이 충돌합니다. 때로는 실패하는 코드 행은 다음과 같습니다.NSDate formatString 가끔 nil을 반환합니다.

self.creationMoment = stringDateFromJson == nil ? NSDate() : NSDate(string: stringDateFromJson, formatString: "yyyy-MM-dd'T'HH:mm:ssZ") 

누구에게 아이디어가 있습니까?

+2

당신이 문자열을 보여줄 수, 재 선언하는 현재 날짜로 변환 할 수 없습니까? –

+0

더 자세한 정보를 제공해야합니다. 실제로 오류의 원인이되는 코드 줄은 무엇입니까? 보다 관련성 높은 코드로 질문을 업데이트하고 실패한 특정 사례를 제공하십시오. – rmaddy

+0

실패한 코드 행은 제가 작성한 정확한 값으로 게시 한 행입니다. 내가 당신에게 준 사례는 실제 사례 중 하나입니다. –

답변

0

나는 스위프트 Date으로 creationMoment 변수 대신 NSDate 다시 나타납니다, 그것은 애플 버그가 수 없었다 결코이 문제를 ...

0

개체가 NSNull 클래스 일 수 있습니다? 이 경우 당신은 사용할 수 있습니다 : 나는 당신의 stringDateFromJson 가끔 비어있을 수 있다고 생각

self.creationMoment = stringDateFromJson.isKind(of: NSNull) ? NSDate() : NSDate(string: stringDateFromJson, formatString: "yyyy-MM-dd'T'HH:mm:ssZ") 
+0

'stringDateFromJson'이 실제로'NSNull'이라면 다른 방법으로 코드가 충돌하기 때문에 이것은 문제가 될 수 없습니다. – rmaddy

0

. 그러므로 == nil은 false가 될 것이고 빈 문자열을 가진 NSDate를 만들려고 할 때 nil이 리턴 될 것입니다. 뭔가 거짓말에 코드를 변경하려고이 let isNotValidStringDate = stringDateFromJson == nil || stringDateFromJson.isEmpty self.creationMoment = isNotValidStringDate ? NSDate() : NSDate(string: stringDateFromJson, formatString: "yyyy-MM-dd'T'HH:mm:ssh")

+0

"2016-12-02T13 : 51 : 23 + 01 : 00"날짜의 질문에있는 예제는 실제 사례였습니다. 앱이 추락했을 때 jsonDateString을 조사한 결과 해당 문자열이 발견되어 비어 있지 않았습니다. 또한 json date는 엔티티의 생성 순간에 백엔드 자동 생성 날짜로 인해 결코 비어 있지 않습니다. –