2015-11-28 1 views
0

Я сохраняю запрос синтаксического анализа в массив, но я вижу следующую ошибку, если let objects = objects as? [PFObject]Downcast from '[PFObject]?' to '[PFObject]' only unwraps optionsals

И происходит следующая ошибка Downcast from '[PFObject]?' to '[PFObject]' только разворачивает опции.

любой, кто знает, как это решить?

func getArray(funcstring: String){ 
 
     
 
     var userGeoPoint: PFGeoPoint 
 
     PFGeoPoint.geoPointForCurrentLocationInBackground { 
 
      (geoPoint: PFGeoPoint?, error: NSError?) -> Void in 
 
      if error == nil { 
 
     
 
      userGeoPoint = geoPoint! 
 
      } 
 
     } 
 
     
 
     
 
     var searchQuery: [String] = [String]() 
 
     
 
     var query = PFQuery(className:"User") 
 
     query.whereKey("geoLocation", nearGeoPoint:userGeoPoint) 
 
     query.limit = 100 
 
     query.findObjectsInBackgroundWithBlock { 
 
      (objects: [PFObject]?, error: NSError?) -> Void in 
 
      if error == nil { 
 
       if let objects = objects as? [PFObject] { 
 
        for object in objects { 
 
         self.searchQuery.append(object.objectForKey("objectId") as! String) 
 
         
 
        } 
 
        
 
       } 
 
      } else { 
 
       print("\(error?.userInfo)") 
 
      } 
 
     } 
 

 
     
 
     
 
     
 
     
 
       }

ответ

0

objects объявлен как [PFObject]?.

Вы собираетесь опустить объект к тому, что уже знает компилятор.

Просто проверьте nil

if let unwrappedObjects = objects { 
    for object in unwrappedObjects { 
    self.searchQuery.append(object.objectForKey("objectId") as! String)  
    } 
} 

или еще "swiftier"

if let unwrappedObjects = objects { 
    self.searchQuery = unwrappedObjects.map{ $0["objectId"] as! String } 
} 
+0

Привет Спасибо за ответ он работал, но теперь я получаю следующее сообщение об ошибке, как self.searchQuery.append .... , Значение типа «viewcontroller» не имеет члена searchQuery ' – user4174219

+0

'searchQuery' должен быть объявлен в области класса (как переменная экземпляра), а не в методе' getArray() ', или если это действительно означает, что локальная переменная опускается 'self' – vadian

+0

Жаль, что я новичок в c oding, где abouts должно я объявить его – user4174219