Как установить текущего пользователя в ячейке? Свифт, Парс

День, ребята. Помогите, третий день не могу решить проблему

Я делаю приложение похожим на Instagram. Хочу сделать так, чтобы при создании поста, в ячейке tableview, писался его никнейм.

Я пытаюсь это:

findSweeter.findObjectsInBackgroundWithBlock{
        (objects:[AnyObject]?, error:NSError?)->Void in
        if error == nil{
            let user:PFUser = (objects as NSArray).lastObject  as PFUser!
            cell1.usernamelabel.text = user.username
        }
    }
}

Но вот в чем проблема: [AnyObject]? не конвертируется в «NSArray» и «NSArray не конвертируется в PFUser»

Помогите, плз. я использую Parse.com


person Hadevs Play    schedule 26.04.2015    source источник
comment
Вы не можете преобразовать массив в PFUser - массив содержит PFUsers - let user=objects[0] as! PFUser   -  person Paulw11    schedule 26.04.2015
comment
@Paulw11, так что мне делать?   -  person Hadevs Play    schedule 26.04.2015
comment
Я показал вам, как получить PFUser   -  person Paulw11    schedule 26.04.2015
comment
@Paulw11Paulw11 Вот проблема: Не удается подписать значение типа [AnyObject]? с индексом типа «Int»   -  person Hadevs Play    schedule 26.04.2015


Ответы (2)


Я так легко решил свою проблему. Я только что изменил переменную PFUser в Data on Parse Clotd на String:

cell1.usernamelabel.text = sweet.objectForKey("usa") as? String

person Hadevs Play    schedule 26.04.2015

Проблема не в приведении, а в том, что objects является необязательным массивом: [AnyObject]?

Сначала вы должны развернуть массив:

findSweeter.findObjectsInBackgroundWithBlock{
    (objects:[AnyObject]?, error:NSError?)->Void in
    if error == nil && indexPath.row < objects?.count{
       var user: PFUser
       if let userObject = objects?[indexPath.row] {
          user = userObject as! PFUser
          cell1.usernamelabel.text = user.username
       }
    }
}
person BoilingLime    schedule 26.04.2015
comment
эта одна ошибка здесь: может ли бот найти перегрузку для «индекса», который принимает предоставленные аргументы - person Hadevs Play; 26.04.2015
comment
›if let userObject = objects?[index] //здесь - person Hadevs Play; 26.04.2015
comment
Вы изменили индекс на индекс, который вы хотите? - person BoilingLime; 26.04.2015
comment
о нет, это была глупая ошибка. Итак, сборка завершена, но фатальная ошибка: Индекс массива вне допустимого диапазона - person Hadevs Play; 26.04.2015
comment
я изменил индекс на indexPath.row - person Hadevs Play; 26.04.2015
comment
Какой индекс вы поставили? Попробуйте с 0 - person BoilingLime; 26.04.2015
comment
Добавьте println("Object array size : \(objects?.count)"), чтобы проверить, есть ли у вас объект в вашем массиве. (видимо до аварии) - person BoilingLime; 26.04.2015
comment
где я должен добавить эту строку? - person Hadevs Play; 26.04.2015
comment
До этого var user: PFUser - person BoilingLime; 26.04.2015
comment
Размер массива объектов: необязательно (0) - person Hadevs Play; 26.04.2015
comment
Итак, в основном ваша проблема решена. Для этого вопроса я имею в виду. Но знайте, что вам нужно выяснить, почему ваш массив объектов пуст. Я никогда не работал с Parse. Так что я не могу вам помочь. Но как только вы узнаете, почему он пуст, код, который я вам дал, заработает. - person BoilingLime; 26.04.2015
comment
Однако, чтобы предотвратить сбой, вы можете выполнить условие if error == nil на if error == nil && indexPath.row < objects?.count - person BoilingLime; 26.04.2015