2015-10-14 2 views
0

Это мой код:Зачем возникает следующая ошибка: «Неустранимая ошибка: неожиданно найден нуль при развертывании необязательного значения»? - и как я могу это исправить?

var usernames = [""] 
var userids = [""] 
var isFollowing = ["":false] 

var refresher: UIRefreshControl! 

func refresh() { 

    var query = PFUser.query() 

    query?.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in 

     if let users = objects { 

      self.usernames.removeAll(keepCapacity: true) 
      self.userids.removeAll(keepCapacity: true) 
      self.isFollowing.removeAll(keepCapacity: true) 

      for object in users { 

       if let user = object as? PFUser { 

        if user.objectId != PFUser.currentUser()!.objectId { 

         self.usernames.append(user.username!) 
         self.userids.append(user.objectId!) 

         var query = PFQuery(className: "followers") 

         query.whereKey("follower", equalTo: PFUser.currentUser()!.objectId!) 
         query.whereKey("following", equalTo: user.objectId!) 

         query.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in 

          if let objects = objects { 

           if objects.count > 0 { 

            self.isFollowing[user.objectId!] = true 

           } else { 

            self.isFollowing[user.objectId!] = false 

           } 
          } 

          if self.isFollowing.count == self.usernames.count { 

           self.tableView.reloadData() 

           self.refresher.endRefreshing() 

          } 

         }) 


        } 

       } 

      } 

     } 





    }) 

Я получаю фатальную ошибку на этой линии, которая говорит:

query.whereKey("follower", equalTo: PFUser.currentUser()!.objectId!) query.whereKey("following", equalTo: user.objectId!)

Как я могу это исправить? Я искал несколько других сообщений и не смог найти что-то полезное. Пожалуйста, будьте очень конкретны, когда вы даете совет - я относительно новичок.

+0

ваш 'PFUser.currentUser() == nil' или' PFUser(). CurrentUser? .objectId == nil' или 'user.objectId == nil' Проверьте, какой из них имеет значение null – milo526

+0

Как бы я мог проверяя это, @ milo526? Мне так плохо, извините. –

+0

Используйте точку останова или зарегистрируйте значения на консоли. – JDM

ответ

0

Как указано в комментариях, одно из ваших значений равно нулю.

Вставьте следующий код перед вашими запросами и исправить метод, который возвращает ноль:

if (PFUser.currentUser() == nil) { 
    print("currentUser() is nil"); 
} else if (PFUser.currentUser()!.objectId == nil) { 
    print("PFUser.currentUser()!.objectId is nil"); 
} else if (user.objectId == nil) { 
    print("user.objectId is nil"); 
} 
+0

Это было напечатано в журналах: nilPFUser.currentUser() !. objectId - nil. Что мне теперь делать? Я действительно сосать, извините. –

+0

спасибо, но я не знаю, что делать дальше –

+0

Кажется, что PFUser.currentUser() возвращает вам действительный объект пользователя, с его идентификатором объектов, равным нулю. Как вы инициализируете свой userObject? Вы должны установить его перед его использованием. – user2700551

0

Существовал наверняка проблемы с журналом Разбор в Вы звоните журнал в функции до, во время запроса в. ваша программа? И проверяете ли вы переменные результата?