Swift 无法将[AnyObject]类型的值转换为所需的参数类型[PFObject]--解析&;斯威夫特II错误

Swift 无法将[AnyObject]类型的值转换为所需的参数类型[PFObject]--解析&;斯威夫特II错误,swift,parse-platform,swift2,Swift,Parse Platform,Swift2,这是失败的一行,错误消息为“无法将[AnyObject]类型的值转换为预期的参数类型[PFObject]” self.customActainAllHandlerWithObjects(对象,成功:成功,失败:失败) 导入UIKit 导入解析 类AbstractService:BaseService{ private let _cache = AbstractCache<T>() private let _parser = AbstractParser<T>() //

这是失败的一行,错误消息为“无法将[AnyObject]类型的值转换为预期的参数类型[PFObject]”

self.customActainAllHandlerWithObjects(对象,成功:成功,失败:失败)


导入UIKit 导入解析

类AbstractService:BaseService{

private let _cache = AbstractCache<T>()
private let _parser = AbstractParser<T>()

/// Store all completionHandlers for convertFromParseObject operations here. Need this to avoid a concurrent conversions of the same object.
var conversions = Dictionary<String, [(entity: T) -> Void]>()

/// Contains ids of objects, which need their videos to be downloaded.
var queue: [(entityId: String, file: PFFile)] = []
var isQueueDownloading = false

var className: String {
    get {
        fatalError("This property must be overridden")
    }
}

// MARK: - Create

func createEntity() -> T {
    let entity = T()
    cache().appendEntity(entity)
    return entity
}

// MARK: - Obtain all

/// Base method, which obtains entities from Parse database.
///
/// - parameter skip: Number of records, which will be skipped.
/// - parameter limit: Max number of entities returned.
/// - parameter constraints: A block, which applies constraints to PFQuery. E.g. query.includeKey("author") or query.whereKey("user", equalTo: PFUser.currentUser()).
/// - parameter success: Success block. Executes when operation successfully finished.
/// - parameter failure: Failure block. Executes when operation fails.

func obtain(skip skip: Int?, limit: Int?, constraints applyConstraints: ((query: PFQuery) -> PFQuery)?, success: (entities: [T]) -> Void, failure: FailureCompletionHandler) {
    var query = PFQuery(className: className)
    if let skip = skip {
        query.skip = skip
    }
    query.limit = limit ?? 1000
    if let applyConstraints = applyConstraints {
        query = applyConstraints(query: query)
    }
    query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
        if let error = error {
            self.callFailureCompletionHandler(failure, error: error)
        }
        else {
            if let objects = objects {
                self.customObtainAllHandlerWithObjects(objects, success: success, failure: failure)
            }
            else {
                failure(allowRetry: false, errorMessage: "Cannot load \(self.className)")
            }
        }
    }
}
private let\u cache=AbstractCache()
私有let_parser=AbstractParser()
///在此处存储convertFromParseObject操作的所有CompletionHandler。需要此操作以避免同一对象的并发转换。
变量转换=字典无效]>()
///包含需要下载其视频的对象ID。
变量队列:[(entityId:String,file:PFFile)]=[]
var isQueueDownloading=false
变量className:String{
得到{
fatalError(“必须覆盖此属性”)
}
}
//马克:-创建
func createEntity()->T{
让实体=T()
缓存().appendEntity(实体)
返回实体
}
//马克:-获得所有
///基本方法,该方法从解析数据库获取实体。
///
///-参数skip:将被跳过的记录数。
///-参数限制:返回的最大实体数。
///-参数约束:将约束应用于PFQuery的块。例如query.includeKey(“作者”)或query.whereKey(“用户”,equalTo:PFUser.currentUser())。
///-参数success:成功块。当操作成功完成时执行。
///-参数失败:失败块。当操作失败时执行。
函数获取(跳过:Int?,限制:Int?,约束应用约束:((查询:PFQuery)->PFQuery)?,成功:(实体:[T])->无效,失败:FailureCompletionHandler){
var query=PFQuery(className:className)
如果让跳过=跳过{
query.skip=跳过
}
query.limit=限额??1000
如果让applyConstraints=applyConstraints{
query=applyConstraints(查询:query)
}
query.findObjectsInBackgroundithBlock{(对象,错误)->中的Void
如果let error=error{
self.callFailureCompletionHandler(失败,错误:错误)
}
否则{
如果让对象=对象{
self.customActainAllHandlerWithObjects(对象,成功:成功,失败:失败)
}
否则{
失败(allowRetry:false,errorMessage:“无法加载\(self.className)”)
}
}
}
}

之所以出现此错误,是因为对象的类型为[AnyObject],但您调用的函数CustomOcctainHandler需要PFObject,因此您必须将对象转换为PFObject

您可以使用作为关键字在类型之间进行转换

所以你可以这样做:

if let myVar as? PFObject {
    // now myVar is a PFObject
}
我不建议这样做,但您也可以使用以下方法强制转换:

myVar as! PFObject

请不要使用屏幕截图来展示您的代码:如果要验证代码,善良的灵魂必须重新键入代码。此外,代码很难阅读。请添加一个。您可能想阅读,这大大提高了获得有用答案的可能性。对不起,请操作。阅读入门指南本应做得更好.在试图解决这个问题时非常沮丧,并且正在寻找快速解决方案。