Objective-C에서 __DATE__
및 __TIME__
을 사용하여 내 앱의 빌드 날짜와 시간을 가져옵니다. 스위프트에서이 정보를 얻을 수있는 방법을 찾을 수 없습니다. 가능한가?Swift에서 빌드 날짜 및 시간 가져 오기
답변
#line
, #column
및 #function
을 사용할 수 있습니다.
원래 답 :
프로젝트에 새로운 목표 - C 파일을 만들고 엑스 코드가 요청할 때, 브리지 헤더를 만드는 예 말한다. 이 새로운 목표 - C 파일에서
다음하여.h
파일 추가 : 이제
NSString *compileDate() {
return [NSString stringWithUTF8String:__DATE__];
}
NSString *compileTime() {
return [NSString stringWithUTF8String:__TIME__];
}
가교 헤더 및 가져 오기로 이동 :
NSString *compileDate();
NSString *compileTime();
그리고 .m
에서
.h
우리가 만들었습니다. 이제 다시 스위프트 파일 중 하나에
:
println(compileDate() + ", " + compileTime())
굉장합니다. 감사합니다 nhgrif. –
유감스럽게도 Swift에서'__LINE__' 또는'__FILE__'을 정확하게 사용하는 방법은 없습니다. 이 같은 접근법은 Objective-C 코드의 라인/파일을 반환합니다. – nhgrif
사실, 방법이 있습니다. Apple에서이 게시물을 확인하십시오. https://developer.apple.com/swift/blog/?id=15 –
당신은 목표-C에 복귀하지 않고 빌드 날짜와 시간을 얻을 수 있습니다. 응용 프로그램이 빌드되면 번들에있는 Info.plist 파일은 항상 프로젝트의 Info.plist 파일에서 만들어집니다. 따라서 해당 파일의 작성 날짜가 빌드 날짜 및 시간과 일치합니다. 앱 번들의 파일을 읽고 속성을 가져올 수 있습니다. 그래서 당신은 그것의 Info.plist 파일에 액세스하여 스위프트의 빌드 날짜를 얻을 수 속성 :
var buildDate:NSDate
{
if let infoPath = NSBundle.mainBundle().pathForResource("Info.plist", ofType: nil),
let infoAttr = try? NSFileManager.defaultManager().attributesOfItemAtPath(infoPath),
let infoDate = infoAttr["NSFileCreationDate"] as? NSDate
{ return infoDate }
return NSDate()
}
참고 :이 내가 처음이 문제를 가지고 때 브리지 헤더를 사용하는 저를 얻었다 게시물입니다. 나는이 "Swiftier"솔루션을 발견하여 나중에 참조 할 수 있도록 공유 할 것이라고 생각했습니다.
[EDIT] 전체 빌드를 수행하지 않을 때에도 최신 컴파일 날짜를 얻기 위해 compileDate 변수를 추가했습니다. 이것은 앱 스토어에서 애플리케이션을 릴리스하기 위해 전체 빌드를해야하기 때문에 개발 중에만 의미가 있지만 여전히 사용 중일 수 있습니다. 동일한 방식으로 작동하지만 Info.plist 파일 대신 실제 코드가 포함 된 번들 파일을 사용합니다.
var compileDate:Date
{
let bundleName = Bundle.main.infoDictionary!["CFBundleName"] as? String ?? "Info.plist"
if let infoPath = Bundle.main.path(forResource: bundleName, ofType: nil),
let infoAttr = try? FileManager.default.attributesOfItem(atPath: infoPath),
let infoDate = infoAttr[FileAttributeKey.creationDate] as? Date
{ return infoDate }
return Date()
}
앱을 업데이트 할 때 info.plist가 동일하게 유지되고 '__DATE__'이 업데이트 시점까지 적절하게 업데이트되기 때문에 일관성있는 결과가'__DATE__ '로 주어지지 않습니다. –
나는 OP가 빌드 날짜와 시간을 찾고 있다고 추론했다. 나는 당신이 "당신이 당신의 앱을 업데이트 할 때"무슨 뜻인지 모르겠다. 다시 작성 중이거나 항상 info.plist의 작성 날짜가 변경되거나 다시 작성되지 않고 날짜가 변경되지 않습니다 (예상대로). –
그래, 나는 재건을 의미했다. 것은 Xcode를 통해 간단한 재 구축으로 가면 이전과 같은 시간을 출력한다는 것입니다. Going Product> Clean은 Info.plist를 강제 업데이트합니다. 그걸 확인할 수 있니? –
- 1. 날짜/시간 형식을 사용하여 날짜 및 시간 정보 가져 오기
- 2. Android에서 날짜 및 시간 가져 오기 서버에서
- 3. 날짜 개체에서 시간 가져 오기 및 설정
- 4. 날짜 선택기에서 날짜 시간 표시 가져 오기
- 5. Swift에서 NSDate로부터 시간 추출하기
- 6. html 5 날짜 유형을 사용하여 시간 및 날짜 가져 오기
- 7. 시간 서버에서 현재 날짜 및 시간 가져 오기
- 8. Swift에서 JSON 가져 오기
- 9. 현재 날짜 및 시간 가져 오기 및 문자열에 추가하기
- 10. Kentico - 날짜/시간 형식 가져 오기/
- 11. Phonegap/AngularJS로 현지 날짜/시간 가져 오기
- 12. mailitem의 완료 날짜 시간 가져 오기
- 13. 다른 시간대로 서버 날짜 시간 가져 오기
- 14. 메이븐으로 빌드 할 때 아티팩트 빌드 번호/날짜 가져 오기
- 15. 날짜/시간의 시간/분만 가져 오기
- 16. 두 날짜 시간 사이에 데이터 가져 오기
- 17. 신속하게 DatePicker에서 날짜/시간 가져 오기
- 18. 가져 오기 날짜 시간 특정 형식
- 19. 특정 삽입물의 날짜/시간 가져 오기
- 20. 날짜 또는 시간 서버 가져 오기
- 21. 페이 스북 형식의 날짜/시간 가져 오기
- 22. Google 스프레드 시트 날짜 및 시간 객체 가져 오기 R
- 23. mongodb document _id 필드에서 날짜 및 시간 가져 오기
- 24. Firebird에서 SQL Server로 데이터 가져 오기 - 날짜 및 시간 유형
- 25. 사용자의 TimeZone에서 사용자의 날짜 및 시간 가져 오기
- 26. ImageMagick : C#으로 날짜 및 시간 가져 오기?
- 27. Swift에서 Int에서 문자열 가져 오기
- 28. DATETIMEPICK_CLASS 요소의 날짜 가져 오기 및 설정
- 29. 일광 절약 시간 전환이 발생하는 다음 날짜/시간 가져 오기
- 30. 오프셋 시간 만 사용자가 선택한 시간대 날짜 시간 가져 오기
스위프트에서 말할 수없는 많은 것들이 있습니다. 별거 아니야. Objective-C로 작성된 도우미 클래스를 사용하십시오 ... – matt