2016-06-16 5 views
0

にサブクラス化する空の値iが「顧客」という名前の私のカスタムクラスにキャストPFObject上の問題を抱えているcellForRowAtIndexPath

これはクラス

@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:オプション( "uZ1v4VTFnt") OBJ:オプション( "ciCOtYFMif") OBJ:オプション( "P43mV63o0l") OBJ:オプション( "YhMWMkklwZ") OBJ:オプション( "LtKxwHApKZ") OBJ:オプション( "EXL5tEW9EI") OBJ:オプション( "I9HoCWqYub")

+0

で解析オブジェクトを初期化する必要がコメントに言及して、あなたが '初期化した、顧客

を返却しているときにクラス名のお客様を使用していますアプリケーションの代理人 'didLaunchWithOption'メソッドのCustomer'クラス? –

+0

はい、私はdispatch_once関数でAppDelegateとCustomersクラスの両方を初期化しようとしましたが、動作しませんでした。 – milonet

答えて

1

は、クラス名を見ては

をミスマッチ持っていただき、ありがとうございます3210クエリで
static func parseClassName() -> String { 
    return "Customer" 
} 

let query = PFQuery(className: "Customers") 

解析クラス名にあなたは私はあなたがアプリデリゲート

+0

私はそれを信じることができません! :) – milonet

関連する問題