пустое значение при приведении PFObject к подклассу в cellForRowAtIndexPath

у меня проблема с приведением PFObject к моему пользовательскому классу с именем «Клиент»

это быстрый файл для класса

    @objc class Customer: PFObject, PFSubclassing  {

    @NSManaged var CompanyName: String
    @NSManaged var City: String
    @NSManaged var CountryCode: String
    @NSManaged var Address: String
    @NSManaged var Prov: String
    @NSManaged var Email: String
    @NSManaged var Vat: String
    @NSManaged var PaymentDelay: String
    @NSManaged var ficId: String
    @NSManaged var owner: Owner


    override class func initialize() {

        struct Static {
            static var onceToken : dispatch_once_t = 0;
        }

        dispatch_once(&Static.onceToken){
            self.registerSubclass()
        }

    }

    static func parseClassName() -> String {
        return "Customer"
    }   
}

и это tableViewDelegate

@objc class CustomersViewController: PFQueryTableViewController {

    override func queryForTable() -> PFQuery {

        let query = PFQuery(className: "Customers")
        query.orderByAscending("CompanyName")
        query.includeKey("owner")

        return query
    }

    override func objectsDidLoad(error: NSError?) {
        super.objectsDidLoad(error)
        //print("\(objects?.count) customers")
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? {

        let cell = cellForTableView(tableView)
        print("obj:\(object?.objectId)")

        if let customer = object as? Customer {
            print("customer")
            let customerLabel = cell.viewWithTag(101) as! UILabel
            customerLabel.text = customer.CompanyName
        }

        return cell;
    }

    func cellForTableView(tableView: UITableView) -> PFTableViewCell{

        let cellIdentifier = "CustomerCell"

        if let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? PFTableViewCell{
            return cell
        } else {
            return PFTableViewCell(style: .Subtitle, reuseIdentifier: cellIdentifier)
        }
    }
}

Проблема в том, что этот код никогда не выполняется... почему?

if let customer = object as? Customer {
                print("customer")
                let customerLabel = cell.viewWithTag(101) as! UILabel
                customerLabel.text = customer.CompanyName
            }

Это моя ошибка или ошибка протокола PFSubclassing?

В журналах говорится, что объект загружается правильно.. это проблема с переносом?

obj:Optional("uZ1v4VTFnt") obj:Optional("ciCOtYFMif") obj:Optional("P43mV63o0l") obj:Optional("YhMWMkklwZ") obj:Optional("LtKxwHApKZ") obj:Optional("EXL5tEW9EI") obj: Необязательный("I9HoCWqYub")

Спасибо


person TheMiloNet    schedule 16.06.2016    source источник
comment
Вы инициализировали класс Customer в методе делегата didLaunchWithOption приложения?   -  person Zell B.    schedule 16.06.2016
comment
да, я пытался инициализировать AppDelegate и класс Customers в функции dispatch_once, но не работал.   -  person TheMiloNet    schedule 16.06.2016


Ответы (1)


Посмотрите на несоответствия имен классов

static func parseClassName() -> String {
    return "Customer"
}

let query = PFQuery(className: "Customers")

В запросе вы используете имя класса Customers, а в имени класса синтаксического анализа вы возвращаете Customer

Также, как я упоминаю в комментарии, вы должны инициализировать объект синтаксического анализа в делегате приложения.

person Zell B.    schedule 16.06.2016
comment
Я не могу в это поверить ! :) - person TheMiloNet; 16.06.2016