Подкласс PFObject получает сообщение об ошибке "Не удалось преобразовать значение типа" Соответствие "в ожидаемый тип аргумента" @noescape (AnyObject) throws -> Bool ""

Я получаю следующую ошибку при вызове indexOf для массива подкласса PFObject.

Невозможно преобразовать значение типа "Соответствие" в ожидаемый тип аргумента "@noescape (AnyObject) throws -> Bool"

мои занятия:

class Match: PFObject, PFSubclassing {XXXX}

Метод, где происходит ошибка:

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
{
    //dismiss the image picker
    self.dismissViewControllerAnimated(true) { () -> Void in
        //wait for the dismissal in case there is an error to show
        let recordedVideofileURL = info[UIImagePickerControllerMediaURL] as? NSURL

        if let recordedVideofileURL = recordedVideofileURL
        {
            //upload the file to S3
            do
            {
                let uploadRequest = try S3UploadManager.uploadFile(self.match!.localPathToVideo()!)

                self.match!.saveEventually({ (success: Bool, error: NSError?) -> Void in
                    if (success)
                    {
                        // The object has been saved.
                        self.matchesController.loadObjects()

                        //set up progress tracking for the upload
                        uploadRequest.uploadProgress = {[weak self](bytesSent:Int64, totalBytesSent:Int64, totalBytesExpectedToSend:Int64) -> Void  in
                            if let match = self?.match
                            {
      >>>>>>error here           var index = self?.matchesController.objects?.indexOf(match)
                            }
                        }
                    }

                })
            }
            catch
            {
                // TODO: handle error
            }
        }
    }
}

Из того, что я только для чтения, эта ошибка происходит, когда объект, содержащийся в массиве, не соответствует расширению Equatable. Но PFObject наследует от NSObject, которые соответствуют этому расширению. Так что я в растерянности...

Любые указатели оценили

1 ответ

Решение

Нашел решение. Оказывается, что метод объектов в PFQueryTableViewController возвращает [AnyObject], поэтому мне нужно привести его к [Match]

let objects = self?.matchesController.objects as! [PFObject]

и тогда это работает...

Я все еще новичок в Swift и Parse, но это кажется неправильным для метода объектов, чтобы вернуть [AnyObject]? особенно учитывая комментарий в документе

/*!
 @abstract The array of instances of <PFObject> that is used as a data source.
 */
public var objects: [AnyObject]? { get }
Другие вопросы по тегам