ios - 适用于 iOS 的 AWS DynamoDB 字符串属性返回 nil

标签 ios swift amazon-web-services amazon-dynamodb

我最近将我的项目更新为 Swift 4,现在当我扫描我的 Amazon 数据库时,属性返回 nil。这是我的扫码:

let scanExpression = AWSDynamoDBScanExpression()
    scanExpression.filterExpression = "contains(Name, :name)"
    scanExpression.expressionAttributeValues = [":name": (user?.username)!]

    dynamoDBObjectMapper.scan(DBPerson.self, expression: scanExpression).continueWith(block: { (task:AWSTask!) -> Any? in
        if let error = task.error as NSError? {
            print("The request failed. Error: \(error)")
        } else if let paginatedOutput = task.result {
            DispatchQueue.main.async(execute: {
                self.people.removeAll()
                for person in paginatedOutput.items as! [DBPerson] {
                    self.people += [person] //breakpoint here
                }
                self.tableView.reloadData()
            })
        }
        return nil
    })

还有我的 DBPerson 类:

import AWSDynamoDB

class DBPerson : AWSDynamoDBObjectModel, AWSDynamoDBModeling  {
    var Name: String?
    var Occupation: String?

    class func dynamoDBTableName() -> String {
        return "People"
    }

    class func hashKeyAttribute() -> String {
        return "Name"
    }
}

我在扫描循环中设置了一个断点来查看我的属性,它们总是返回 nil。我的项目在更新到 Swift 4 之前正在运行,在我的表中显示了属性。我试过将 Name 和 Occupation 的类型(在 DBPerson 类中)更改为 NSString、NSArray 之类的类型,甚至更改为 Substring 和 CFString 之类的黑暗镜头。

我的 DynamoDB 表存在其中的值,并且返回了正确数量的项目,但属性值始终为零。这是我 table 上的一个 sample :

{
"Name": "Bill",
"Occupation": "Firefighter"
}

除了转换回 Swift 3 之外,还有其他解决方案吗?谢谢。

最佳答案

这是由于 Swift 4 中推理 @objc 行为的改变。您需要使用 @objc 标记 ObjectiveC 可用的属性,或使用 @objcMembers

标记 ObjectiveC 可用的类的所有属性

例子引用: https://github.com/aws/aws-sdk-ios/issues/750#issuecomment-337046816

关于ios - 适用于 iOS 的 AWS DynamoDB 字符串属性返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46574023/

相关文章:

amazon-web-services - 在 AWS ElastiCache Redis 集群上启用集群模式

python-3.x - AWS Python SDK Boto3 EMR client.get_waiter ("step_complete") 失败

linux - SCP 不适用于目录,但适用于文件 - 从本地上传到 EC2?

ios - 文件从NSLibraryDirectory中消失

ios - 无法在我的 Pod 中添加依赖项

swift - 在添加完成 block 之前触发 Alamofire 网络请求?

swift - 如何在 SwiftUI TabView 中设置默认选项卡?

ios - 水平条形图 Swift

ios - UIWebview 总是以水平滚动加载

iphone - 你能缓存 UIViewControllers 吗?