Разобрать строковый запрос как массив

Я хочу, чтобы пользователи могли искать мое приложение в центре внимания. У меня есть PFQueryTableViewController с 500 строками. В Parse доступная для поиска информация сохраняется как строка с общим числом строк 500. Итак, чтобы иметь возможность индексировать строки, которые являются строкой, мне нужен массив для ключевых слов и тому подобного. Но я не знаю, как преобразовать запрос или распечатать его как массив.

Подводя итог: у меня есть 500 строк строки, и я хочу, чтобы они печатались в виде массива, но не смогли.

Спасибо.

Моя функция запроса:

 override init(style: UITableViewStyle, className: String!) {
        super.init(style: style, className: className)
    }
    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!

        self.parseClassName = "myClassName"
        self.textKey = "myColoumnName"
        self.pullToRefreshEnabled = true
        self.paginationEnabled = false
    }
    override func queryForTable() -> PFQuery {
        var query = PFQuery(className: "myClassName")

        query.cachePolicy = .CacheThenNetwork
        query.orderByAscending("myColoumnName")
        query.limit = 1000
        return query
    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> myPFTableViewCell {
        var cell = tableView.dequeueReusableCellWithIdentifier("mySegue") as! myPFTableViewCell!
        if cell == nil {
            cell = myPFTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "mySegue")
        }
        if let myString = object?["myColoumnName"] as? String {
            cell?.myLabel?.text = myString
        }
        if let myString2 = object?["myColoumnName2"] as? String {
            cell?.myLabel2?.text = myString2
        }

        return cell
    }
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "mySegue2" {
            var detailScene = segue.destinationViewController as! myViewController
            if let indexPath = self.tableView.indexPathForSelectedRow {
                let row = Int(indexPath.row)
                detailScene.currentObject = (objects?[row] as! PFObject)
            }
        }
    }

person ggnoredo    schedule 21.09.2015    source источник


Ответы (1)


При использовании PFQueryTableViewController все результаты запроса сохраняются в массиве objects. Это массив объектов PFObject, поэтому вам нужно создать функцию для создания массива условий поиска с использованием свойств ваших объектов PFObject. Это может быть примерно так:

if let objectsArray = objects as [PFObject] {
    for object in objectsArray {
        stringArray.append(object["myColoumnName"] as? String)
    }
}
person Russell    schedule 21.09.2015
comment
Спасибо, что эта команда заполнила мой массив данными анализа, но проблема в том, что он никогда не перестает добавляться, и он идет до бесконечности, пока я не остановлю приложение. - person ggnoredo; 21.09.2015
comment
Вероятно, он вызывается несколько раз. Вы захотите, чтобы это вызывалось только один раз, предполагая, что данные не меняются часто. Если данные в Parse часто меняются и вам нужно обновить массив, удалите все старые значения с помощью stringArray.removeAll(keepCapacity: false) перед добавлением новых. - person Russell; 22.09.2015