附加词典,iOS,Swift

时间:2017-07-22 05:41:31

标签: ios dictionary append

我正在尝试编辑我创建的代码,即将文本发布到firebase。我最初只允许8张图片和描述,不多也不少。我现在正在重构,所以用户可以选择任何数字,最多8个。我检查照片是否有效,并上传所选的数量。我已经放置了支票以查看是否有图片,如果有,它会显示文本框以添加描述,否则它将被隐藏。我的问题是我有一个字典,发布到firebase,发布了8个描述,所以如果我要创建2,它将填充其他6个""有没有办法检查如果一个图像像我上面那样零,那么它会添加到字典上传。我的功能如下..

    func postToFirebase() {

    let  post: Dictionary<String, AnyObject> = [
        "photoInfo1": photoInfo1.text as AnyObject,
        "photoInfo2": photoInfo2.text as AnyObject,
        "photoInfo3": photoInfo3.text as AnyObject,
        "photoInfo4": photoInfo4.text as AnyObject,
        "photoInfo5": photoInfo5.text as AnyObject,
        "photoInfo6": photoInfo6.text as AnyObject,
        "photoInfo7": photoInfo7.text as AnyObject,
        "photoInfo8": photoInfo8.text as AnyObject
    ]


    let firebasePost = DataService.ds.REF_BASE.child("posts").child("\(stringPassed)")
    firebasePost.updateChildValues(post)
}

我在此之前做的检查是隐藏方框..

if passImage2 == nil {
        photo2.isHidden = true
        photoInfo2.isHidden = true
    }

等等。

我希望我能检查一下这张照片是否为零,如果是这样的话,请附上&#34; post&#34;字典,而不是所有已编码的字典。

1 个答案:

答案 0 :(得分:1)

如果您不需要将photoInfo作为连续编号,则可以使用

let filtered = post.filter { (key, value) -> Bool in
    guard let stringValue = value as? String else { return false }
    return stringValue != ""
}

如果你需要它是连续的,你可以过滤一系列标签文本,然后使用enumarated和reduce,你可以创建一个新的字典。