2016-06-16 2 views
0

에서 하위 클래스빈 값은 내가 "고객"라는 내 사용자 정의 클래스에 캐스트 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' 메소드에서 고객 클래스? –

+0

예, dispatch_once 함수에서 AppDelegate와 Customers 클래스를 초기화하려고했지만 작동하지 않았습니다. – milonet

답변

1

는 클래스 이름에서 보면

와 일치하지나요 내가 코멘트에서 언급으로 해석 클래스 이름은 고객 또한

을 반환하는 동안 쿼리에서3210

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

let query = PFQuery(className: "Customers") 

당신은`당신이 응용 프로그램의 위임에

+0

나는 그것을 믿을 수 없다! :) – milonet