AWS 入门 Swift(主要问题)

AWS Getting Started With Swift (Major Issues)

我对 Swift 编程还很陌生,对开发一般的移动应用程序也很陌生。我在这里尝试遵循以下入门指南:https://github.com/aws/aws-sdk-ios

我目前正在尝试做的是创建我的应用程序组件,该组件创建用户帐户并允许用户登录。

我已按照自述文件进行操作,但是当我转到以下代码部分以调用 AWS 时:

let credentialsProvider = AWSCognitoCredentialsProvider(
    regionType: CognitoRegionType,
    identityPoolId: CognitoIdentityPoolId)
let configuration = AWSServiceConfiguration(
    region: DefaultServiceRegionType,
    credentialsProvider: credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
let dynamoDB = AWSDynamoDB.defaultDynamoDB()
let listTableInput = AWSDynamoDBListTablesInput()
dynamoDB.listTables(listTableInput).continueWithBlock{ (task: AWSTask!) -> AnyObject! in
    let listTablesOutput = task.result as AWSDynamoDBListTablesOutput

    for tableName : AnyObject in listTablesOutput.tableNames {
        println("\(tableName)")
    }

    return nil
}

我尝试 运行 我的程序,一切都编译,但停在以下行:let listTablesOutput = task.result as AWSDynamoDBListTablesOutput

当我说停止时,我的意思是我得到了

Thread 6:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP,subcode=0x0)

总的来说,我花了几个小时阅读文档,但它无法回答我的任何问题。我们是否需要使用 DynamoDB 来允许用户创建帐户并登录?如果是这样,Cognito 到底有什么用?

还有上面代码中的变量,credentialsProvider到底是什么?我们从哪里获得这些信息?

提前感谢任何可以帮助我解决这个问题的人。

你应该使用

let listTablesOutput = task.result as! AWSDynamoDBListTablesOutput

而不是

let listTablesOutput = task.result as AWSDynamoDBListTablesOutput ,

编译器应该警告你,如果你用最新版本的 Xcode 6.

编译它

在Swift中写了一个DynamoDB Sample Project,可能会有帮助。