DynamoDBMapper batchLoad传入参数

时间:2018-10-24 23:15:25

标签: amazon-dynamodb

DDBMapper调用batchLoad的方式有两种,不同的传递参数是不同的。

class BottomDetailsView: UIView {
var shapeLayer: CAShapeLayer!

//If the view's bounds change, update the shapeLayer's frame and also rebuild the path
override var bounds: CGRect {
    didSet {
        shapeLayer.frame = self.bounds
        createShapeLayerPath()
    }
}

func createShapeLayerPath() {
    let path = UIBezierPath(roundedRect: bounds,
                            byRoundingCorners: [.bottomLeft, .bottomRight],
                            cornerRadii: CGSize(width: 15.0, height: 15.0))
    shapeLayer.path = path.cgPath
}

override init(frame: CGRect) {
    super.init(frame: frame)

    shapeLayer = CAShapeLayer()
    shapeLayer.frame = bounds
    layer.mask = shapeLayer
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}
}

我了解第二种方式,通过指定keyPair对我来说更有意义。 那第一个呢?所以基本上只是通过列表?那有什么区别呢?第二个显然更复杂

1 个答案:

答案 0 :(得分:1)

想象一下,我有一个带有分区键userId和范围键createdDate的User对象。我要批量加载3个用户。

在第二个选项中,我必须创建3个userId和createdDate密钥对。在第一个选项中,我使用userId和createdDate实例化3个User对象,并将它们放入列表中。

如果我在User构造函数中有逻辑,则第一个选项可能更合适。例如,也许createdDate不能超过1年。在这种情况下,创建用户对象是一个优势,因为执行了构造函数逻辑。另外,我可能已经从应用程序的其他部分传递了User对象,在这种情况下,从它们创建密钥对只是我不需要编写的额外代码。

所以基本上没有太大区别。我怀疑有些人会发现第一个选项更令人愉悦,因为DynamoDBMapper是一种对象持久性解决方案,因此它应该支持传递对象(而不是未定义的键对)。