【问题标题】:Downcast from '[PFObject]?' to '[PFObject]' only unwraps optionals来自“[PFObject]?” to '[PFObject]' 只解开可选项
【发布时间】:2015-11-28 13:10:44
【问题描述】:

我正在将解析查询保存到数组中,但如果让对象 = 对象为? [PF对象]

从 '[PFObject]?' Downcast 发生以下错误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)")
            }
        }

        
        
        
        
                }

【问题讨论】:

    标签: ios swift parse-platform downcast


    【解决方案1】:

    objects 被声明为[PFObject]?

    你要将对象向下转换为编译器已经知道的东西。

    只需检查nil

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

    还是“更快捷”

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

    【讨论】:

    • 嗨,感谢您的回复,它有效,但现在我收到以下错误 self.searchQuery.append....,“viewcontroller”类型的值没有成员“searchQuery”
    • searchQuery 应该在类范围内声明(作为实例变量)而不是在 getArray() 方法中,或者如果它真的是作为局部变量省略 self
    • 对不起,我是新手,我应该在哪里声明它
    • 类范围意味着在大括号内class viewController : UIViewController { var ... }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 2015-03-26
    • 2014-07-25
    • 2017-11-16
    • 2020-11-20
    相关资源
    最近更新 更多