Skip to content

?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

[에러메세지]
1. Argument type 'String?' does not conform to expected type 'CVarArg'

2. Fatal error: Unexpectedly found nil while unwrapping an Optional value
[발생상황]
let pushAllow = UserDefaults.standard.loadValueForKey(key: "PUSHKEY")
let token = UserDefaults.standard.loadValueForKey(key: "TOKENKEY")
let uuid = UserDefaults.standard.loadValueForKey(key: "UUID")

 var pushFlag = "0"
    if pushAllow == "Y" {
        pushFlag = "0"
     }else {
       pushFlag = "1"
    }
        
 let tokenScript = String(format: "javascript:save_token_member('%@', '%@', '%@', 'I');", uuid, token, pushFlag)
        webView.evaluateJavaScript(tokenScript) { (result, error) in
            if error == nil {
                print(result as Any)
            }
        }

 

파란색 loadValueForKey(key:) 는 아래의 코드로 익스텐션으로 구현한 부분입니다.

func loadValueForKey(key:String) -> String? {
        UserDefaults.standard.object(forKey: key) as? String
    }

 

제가 질문드리는 에러는 token부분에서 발생하고 있는데 token으로만 할 경우,

1. Argument type 'String?' does not conform to expected type 'CVarArg' 으로 에러가 발생,

token as! CVarArg 또는 token!으로 수정해야 빌드가 가능해집니다.

 

그러면 2. Fatal error: Unexpectedly found nil while unwrapping an Optional value에러가 뜨면서 빌드가 멈춥니다.

 

에러가 발생하려면 바로 앞 uuid에서부터 잘못되어야 정상이고, 그 부분에서부터 발생하는 것이 맞는 거 같은데

token에서만 발생하는 것도 이해가 되질 않고,

1번 에러의 의미가 문자열 형식이 잘못된거라고 해서 %@를 %s로 바꿔보라고 해서 바꿔도 여전히 에러는 똑같고...

사실 문자열에러도 날거면 처음부터 나는게 맞다고 보는데...(둘 다 String인데)

 

2번은 당연히 String?으로 되어있는데 token as! CVarArg 또는 token! 으로 바꾸니

unwrapping an Optional value에러가 발생 할 수 밖에 없고... 구글링해도 이런 경우는 안 나와서 어떻게 해야 할 지 모르겠습니다...

제가 어느 부분을 실수하고 놓치고 있는걸까요...?

  • profile

    let pushAllow = UserDefaults.standard.loadValueForKey(key: "PUSHKEY") ?? ""
    let token = UserDefaults.standard.loadValueForKey(key: "TOKENKEY") ?? ""
    let uuid = UserDefaults.standard.loadValueForKey(key: "UUID") ?? ""

    아니면 애초에 loadValueForKey(key:String) -> String?에서 String? 대신 String으로 하고 디폴트 값을 ""빈 값으로 이용하면 나중에 확인 할 때 stringValue.isEmpty로 체크하면 될테고요.

    loadValueForKey(key:)의 return 값이 optional이기 때문에 문제되는 것 같은데 강제 언래핑이나 as! String 으로 사용하시는 것 보다는 이게 낫지 않을까 생각해서 올려봅니다.

  • ?
    리턴값이 optional이어서 문제가 되는거였군요.... optional을 공부한다고 하는데 많이 부족한 거 같습니다..
    디폴트 값을 ""빈 값으로 이용한다는 말씀은 저장된 디폴트 값을 빈 값을 미리 넣어 둔다는 말씀이실까요?
  • profile
    func loadValueForKey(key:String) -> String {
        // key값에 해당하는 것을 String optional로 타입캐스팅 후,
        // 해당 값이 존재하지 않는 경우(nil인 경우) ""로 치환,
        // 존재하는 경우 Optional이 아닌 value(String)를 반환.(nil coalescing)
        return UserDefaults.standard.object(forKey: key) as? String ?? "" 
    }


    이렇게 사용하시면 key값에 해당하는 userDefault 값을 불러왔을 때, 해당 값이 없는 경우(nil), "" 값을 반환하게 됩니다.
    그러면 UserDefaults에 저장되어있는 key에 해당하는 value 값은 저장한 적이 없으신 경우에는 여전히 nil상태이지만, loadValueForKey함수를 이용해서 불러오면 nil인 값은 String ""로 바뀌어 반환이 되구요.

    이렇게 이용하시면
    let tokenScript = String(format: "javascript:save_token_member('%@', '%@', '%@', 'I');", uuid, token, pushFlag)
    부분에서 발생하는
    Fatal error: Unexpectedly found nil while unwrapping an Optional value
    에러도 발생하지는 않는거구요.

    대신 token이나 uuid가 ""값인 경우에, 정상적으로 이용이 불가능 할 테니, tokenScript변수에 할당하기 전에 guard나 if문으로 isEmpty체크를 해서 사용하시면 될 것 같습니다.

    보면 좋은 자료들 내용입니다
    - 타입 캐스팅 관련 포스트
    https://seoyoung612.tistory.com/entry/swift%EC%8A%A4%EC%9C%84%ED%94%84%ED%8A%B8%EA%B8%B0%EB%B3%B8%EB%AC%B8%EB%B2%9510-%ED%83%80%EC%9E%85%EC%BA%90%EC%8A%A4%ED%8C%85-%EB%8B%A4%EC%9A%B4%EC%BA%90%EC%8A%A4%ED%8C%85-%EC%97%85%EC%BA%90%EC%8A%A4%ED%8C%85
    - Optional 관련 포스트들
    https://zeddios.tistory.com/16
    https://yagom.net/docs/nil-coalescing-operator/
    https://simajune.github.io/2017/09/20/Optional/

  • ?
    많은 도움이 되었습니다. 타입캐스팅과 옵셔널 관련 자료들도 꼼꼼하게 읽도록 하겠습니다. 알려주셔서 감사합니다-

  1. 에러메세지질문방 이용안내 (등록포인트 : 300, 답변포인트: 500, 추천포인트: 500)

    간혹 컴파일러에서 내뱉는 에러메세지를 보고도 의미를 알 수 없을때가 있습니다. 이 게시판은 그러한 에러메세지를 정리하고 그 해결책을 공유하는 공간입니다. 에러메세지를 제목으로 입력하고 증상을 내용에 입력해주세요. 제목에는 에러메세지 내용에는 증...
    Date2015.03.01 By아이폰데브 Reply0 Views291 Votes0
    read more
  2. M1 Mac - Could not find module 'RxSwift' for target 'x86_64-apple-ios-simulator'; found: arm64, arm64-apple-ios-simulator

    [에러메세지]   M1 Mac - Could not find module 'RxSwift' for target 'x86_64-apple-ios-simulator'; found: arm64, arm64-apple-ios-simulator  [발생상황]   인텔 맥북에서 만든 프로젝트를 애플 실리콘 기반 맥북에서 시뮬레이터를 실행시 위와 같은 오류...
    Date2021.06.20 By모그레인 Reply0 Views30 Votes1 new
    Read More
  3. Argument type 'String?' does not conform to expected type 'CVarArg'를 고치면 다른 에러가 발생합니다

    [에러메세지] 1. Argument type 'String?' does not conform to expected type 'CVarArg' 2. Fatal error: Unexpectedly found nil while unwrapping an Optional value [발생상황] let pushAllow = UserDefaults.standard.loadValueForKey(key: "PUSHKEY") le...
    Date2021.05.27 By윔피키드 Reply4 Views39 Votes0
    Read More
  4. Command CompileSwift failed with a nonzero exit code

    [에러메세지] Command CompileSwift failed with a nonzero exit code [발생상황] 브랜치들을 머지하고 나서 실행을 시켜보니 몇몇 팟 파일들에서 저 에러메시지가 나오네요  어떻게 해결해야하나요?   pod을 삭제했다가 다시 깔아야 할까요??  
    Date2021.03.02 By촉코 Reply2 Views296 Votes0 file
    Read More
  5. devices 실행 오류 입니다.

    [에러메세지]   연결해둔 테스트 기기 사용이 되지않기때문에 다시 연결해달라는 문구로 확인이 됩니다. [발생상황] Xcode Version 11.7 테스트 기기 6s viersion 14.4 입니다. 정상적으로 진행이 되다가 어느 시점부터 위와 같은 메세지 문구가 뜨며 작동이 ...
    Date2021.02.17 By김진우 Reply2 Views82 Votes0 file
    Read More
  6. xcode debug 빌드 에러

    [에러메세지] unable to build chain to self-signed root for signer "apple development" Command /usr/bin/codesign failed with exit code 1 [발생상황] Xcode에서 디버그 빌드로 단말기에 넣을려고 하는데 해당 에러 메세지가 뜨면서 Failed가 됩니다. 유...
    Date2021.02.09 By카악퉤 Reply1 Views72 Votes0
    Read More
  7. 카메라 기능에서 Thread 1: Fatal Error: Unexpectedly found nil while Optional value 가 뜹니다.

    [에러메세지] Thread 1: Fatal Error: Unexpectedly found nil while Optional value  [발생상황] 카메라 권한 허용하는 부분에서 메시지를 띄우지 못하고 xcode상에서의 에러가 뜹니다.  실제기기에서는 카메라를 잘 인식하여 기능에 이상없이 작동하는데  시...
    Date2020.10.30 By가주지노 Reply2 Views94 Votes0 file
    Read More
  8. NSCocoaErrorDomain Code=3840 "Unescaped control character around character 56." UserInfo={NSDebugDescription=Unescaped control character around character 56.}

    [에러메세지] error Domain=NSCocoaErrorDomain Code=3840 "Unescaped control character around character 56." UserInfo={NSDebugDescription=Unescaped control character around character 56.} [발생상황] 아이디 찾기 버튼 을 눌렀을 때 뜨는 에러 메세...
    Date2020.09.22 By배워가고있는개발자 Reply0 Views127 Votes0 file
    Read More
  9. svn: error: The subversion command line tools are no longer provided by Xcode

    [에러메세지] svn: error: Failed to locate 'svn'. svn: error: The subversion command line tools are no longer provided by Xcode.     [발생상황] Github에 올려진 파일을 다운로드해서 pod설정을 위해 터미널에서 pod install 명령 실행중에 발생  
    Date2020.04.18 By올레~ Reply2 Views382 Votes0
    Read More
  10. Your app crashed on iPad running iOS 13.4 on WiFi when we:

    [에러메세지] Apple의 메시지 2. 1 Performance: App Completeness 2. 2 Performance: Beta Testing 2. 3 Performance: Accurate Metadata Guideline 2.1 - Performance - App Completeness Your app crashed on iPad running iOS 13.4 on WiFi when we: 1. La...
    Date2020.04.09 Bygoeasy Reply1 Views141 Votes0 file
    Read More
  11. [framework] CUICatalog: Invalid asset name supplied: '' 이 에러는 어떻게 해결해야하나요?

    [에러메세지] [framework] CUICatalog: Invalid asset name supplied: '' [발생상황] 개발 언어는 Swift입니다. 오늘 새로 프로젝트를 만들고 CocoaPod설정을 한 후 몇개의 기본이미지만 넣고 실행을 했을 때 앱이 튕기지는 않지만 이런 오류가 뜨네요 [framew...
    Date2020.03.06 By루빈 Reply2 Views232 Votes0
    Read More
  12. No signing certificate "iOS Distribution" found 질문입니다.

    [에러메세지] No signing certificate "iOS Distribution" found [발생상황] 프로젝트를 더블클릭하고 Signing(Release) 부분에 디벨로퍼사이트에서 받은 Profiles를 다운받고 더블클릭하여 갱신 하였습니다 그랬더니 하위에 Status 부분에  'No signing certi...
    Date2018.10.17 ByIOS초보 Reply2 Views1007 Votes0
    Read More
  13. 실제 아이폰에서 시뮬레이션 할 때 에러 문의드립니다

    [에러메세지] "Swift stdlib tool Error" "task failed with exit 1 signal 0 { /usr/bin/codesign '--force' '--sign' ... }" [발생상황] 애플 개발자 등록도 마치고 인증서도 받고 모든 에러를 다 해결하고 시뮬레이터가 아닌 아이폰을 선택해서 실행하게 되...
    Date2017.11.07 BySYLEE Reply1 Views567 Votes0
    Read More
  14. This app has crashed because it attempted to access privacy-sensitive data without a usage description

    [에러메세지] This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app use...
    Date2016.10.22 By미노 Reply1 Views312 Votes0
    Read More
  15. App installation failed 에러

    [에러메세지]  App installation failed  This application's application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed. [발생상황]  Objective-C 로 제작된 앱을 Swift...
    Date2016.10.03 By미노 Reply1 Views1690 Votes0 file
    Read More
  16. Could not find Developer Disk Image

    [에러메세지] Could not find Developer Disk Image [발생상황] 아이폰에서 테스트를 하려고 컴파일을 하려고하면 발생
    Date2015.12.15 By아이폰데브 Reply3 Views3981 Votes0
    Read More
  17. Source Kit Service Terminated

    playground에서 코드입력하면 계속 같은 에러메세지가 출력
    Date2015.03.05 By미노 Reply2 Views336 Votes1
    Read More
  18. [샘플] iOS _OBJC_CLASS_$_ASIdentifierManage referenced from:...

    iOS _OBJC_CLASS_$_ASIdentifierManage referenced from: 이런 에러메세지가 뜨는데 뭐가 문제인지 모르겠습니다.
    Date2015.03.03 By아이폰데브 Reply1 Views403 Votes0
    Read More
Board Pagination Prev 1 Next
/ 1

미답변질문들

아이폰데브 미답변질문들

운영진홈페이지

미노웍스 홈페이지

불편사항접수

아이폰데브 불편사항접수

구독하기

아이폰데브구독하기

후원하기

아이폰데브 후원명단
아이폰데브 후원하기

아이폰데브 모바일앱

아이폰데브 모바일앱

Socail Media

회원수   전체 : 11,658   오늘 : 4   어제 : 5   |   방문자수   전체 : 2,437,455   오늘 : 668   어제 : 842   |   페이지뷰   전체 : 39,232,318   오늘 : 3,010   어제 : 4,024  

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소