Можно ли создать массив конкретных объектов в Parse? - PullRequest
0 голосов
/ 23 мая 2019

Я сделал приложение для QR-сканера, я вручную поместил некоторые QR-коды в анализ для его распознавания, а все сканированные QR-коды, которые я не проанализировал, не будут распознаны.

Единственное, что может отличить их, это их (информация), то есть "ресторан", "маникюрный салон" и т. д.

Я нашел способ записать целое число от того, сколько раз выбранный QRCode был отсканирован, чтобы затем поместить на ярлык в приложении.

Я могу (.count) ВСЕ qrCodes, сохраненные и отсканированные пользователем, но не могу понять, как я могу затем положить все "Nail"Salons "в свой собственный массив при разборе или запуске цикла For, соответствующего тем, которые мне нужны.

 // The code below will retrieve everything in the "info" column and print it to console
 // This prints "Nails Salon" x 5, "Restaurant" x3 and "Coffee Shop" x 7 in the order that they were scanned (Unorganised)
 // What block of code could I make to display what PFuser.current currently has in their parse?
 // E.g. PFUser has scanned "Nail Salon" 5 Times, "Restaurant" 3 time etc etc

    let infoCheck = PFQuery(className: "UserQRCodes")
    infoCheck.whereKey("info", contains: "")
    infoCheck.findObjectsInBackground { (objects: [PFObject]?, error: Error?) in
        if let error = error {

            print(error.localizedDescription)
        } else if let objects = objects {

            print(objects)
        }

    }

// To retrieve everything the USER has scanned and display it as String on the APP


let query = PFQuery(className: "UserQRCodes")
    query.whereKey("userName", equalTo: PFUser.current()!)
    query.findObjectsInBackground { (objects: [PFObject]?, error: Error?) in
        if let error = error {
            //log details of the failure
            print(error.localizedDescription)
        } else if let objects = objects {
            let stampees: Int = objects.count

            let totalStampees = String(stampees)
            self.stampeesCollectedLabel.text = totalStampees
            print(objects.count)
        }

    }


    // Do any additional setup after loading the view.
}

1 Ответ

0 голосов
/ 23 мая 2019

Вы хотите фильтровать элементы в вашем массиве сканов. Для каждого типа кода вызовите что-то вроде

// '$0' is your PFObject. Replace 'name' with whatever `PFObject` property 
// represents the object's type
let nailSalons = objects.filter { $0.name == "Nail Salon" }

Затем вы можете использовать этот отфильтрованный массив для подсчета.

Обратите внимание, что синтаксис filter { $0... } является сокращением для

objects.filter { (object) throws -> Bool) in
    return object.name == "Nail Salon"
}

Вам нужно будет использовать полную версию, если ваше условие более сложное, чем простое однострочное выражение. Обратите внимание, что в короткой версии подразумевается return.

...