2016-10-14 1 views
-1

Xcode에서이 문제를 해결할 수 없었습니다. 여기스위프트 3 : 인스턴스 'CognitoPoolID'를 '상수'유형에 사용할 수 없습니다.

는 상수가 가장 큰 문제는이 라인에

struct Constants { 

let AWSAccountID = "XXXXXXXXXXXX" 
let CognitoPoolID = "arn:aws:XXXXXXX-XXXXXXXX:XX-XXXXXXXXX-X:XXXXXXXXXXXX:XXXXXXXXXXXX/XX-XXXXXXXX-X:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" 
let CognitoRoleAuth = "arn:aws:iam::XXXXXXXXXXXX:XXXX/XXXXXXX_XXXXXXXX_XXXX" 

} 

정의하는 방법이다

let provider = AWSCognitoCredentialsProvider(... 
     identityPoolId:Constants.CognitoPoolID.value,...) 

내가 구축 및/또는 코드 분석을 제공 실행하려고 할 때 나타나는 오류 나 다음 컴파일러 오류.

인스턴스 멤버 'CognitoPoolID는'끝까지 끝까지 공급자 선언에서 유형 '상수'

여기

있는 코드에서 사용할 수 없습니다.

// This specifies AWS connection parameters. 
    let provider = AWSCognitoCredentialsProvider (regionType: .apNortheast1, 
               identityPoolId: Constants.CognitoPoolID.value, 
               unauthRoleArn: "arn:aws:iam::XXXXXXXXXXXX:XXXX/XXXXXXX_XXXXXXXXXXX_XXXX", 
               authRoleArn: Constants.CognitoRoleAuth.value, 
               identityProviderManager: Constants.AWSAccountID.value); 

    let configuration = AWSServiceConfiguration(region:.apNortheast1, credentialsProvider:provider); 

    AWSServiceManager.default().defaultServiceConfiguration(configuration) 

    // Set out the Auth0 URL here which is the same Open ID Connect Provider URL. 
    provider.logins = ["marcadian.au.auth0.com" : idToken] 

    provider.getIdentityId().continue({ (task:AWSTask!) -> Any? in 

     self.provider.refresh() 

     if (task.error != nil) { 
      // Failed Error Handling code goes here. 

     } else { 
      // User has logged in successfully. 

     } 
     return nil 
    }) 

    // User has dismissed the Lock View Controller. 
    controller?.dismiss(animated: true, completion: nil) 
    } 

} 

이것은 무엇을 의미합니까?

+0

음, 정수 파일없이 직접 메서드에 원하는 데이터를 추가하려고했습니다. 하지만 제게 해결책을 줄 수 있다면 고맙겠습니다. –

+0

그럼 네 도움을 부탁드립니다. –

+0

제 대답이 옳았습니다. 당신은'정적하자'라고 말했어야합니다. – matt

답변

1

오류 메시지 Instance member 'CognitoPoolID' cannot be used on type 'Constants' 당신이 클래스 또는 구조체, Constants의 이름으로 CognitoPoolID을 적용하는 것을 의미하지만, 그것은 예를 속성입니다. 이것을 클래스 또는 정적 속성으로 지정했다면 class 또는 static으로 선언해야합니다.

따라서, 귀하의 경우, 당신은 말했다 :

struct Constants { 
    let AWSAccountID = // ... 
    let CognitoPoolID = // ... 
    let CognitoRoleAuth = // ... 
} 

은 당신이 말한해야합니다

struct Constants { 
    static let AWSAccountID = // ... 
    static let CognitoPoolID = // ... 
    static let CognitoRoleAuth = // ... 
} 

그냥 변경합니다. 이제 코드가 올바르게 컴파일되고 작동합니다.

+0

그럼 그 종류의 문제를 해결하지만 지금은 다음과 같은 또 다른 오류가 나타납니다 : –

+1

> 유형 '문자열'의 값은 '값'회원이 없습니다 –

+0

'.value' 부분 만 삭제하면됩니다. 당신은 결코 그것을 필요로하지 않았습니다. 네가 생각했던 걸 상상할 수 없어. 이러한 것들은 문자열이며, 당신이 원하는 것입니다. – matt

관련 문제