segue PFObject无法识别的选择器

时间:2015-01-13 19:45:59

标签: ios swift parse-platform segue pfobject

当我试图将PFObject传递给detailVC并按下tableView中的单元格时,我收到错误(见下文)。 在我看来,我做得对。

我正在加载timeLineData数组中的对象并使用故事板NavigationController。我还使用2个查询来获取UISearchBar中的名字和姓氏。

+[PFObject parseClassName]: unrecognized selector sent to class

我使用异常断点来查找错误,它给了我这个:

TongerenApp`-[PFObject(Private) init] at PFObject.m:156:
0x150535:  pushl  %ebp
0x150536:  movl   %esp, %ebp
0x150538:  pushl  %ebx
0x150539:  pushl  %edi
0x15053a:  pushl  %esi
0x15053b:  subl   $0x2c, %esp
0x15053e:  calll  0x150543                  ; -[PFObject(Private) init] + 14 at PFObject.m:156
0x150543:  popl   %ebx
0x150544:  movl   0x8(%ebp), %eax
0x150547:  movl   %eax, -0x18(%ebp)
0x15054a:  movl   0xd4291(%ebx), %eax
0x150550:  movl   %eax, -0x14(%ebp)
0x150553:  movl   0xd258d(%ebx), %eax
0x150559:  movl   %eax, -0x1c(%ebp)
0x15055c:  movl   %eax, 0x4(%esp)
0x150560:  leal   -0x18(%ebp), %eax
0x150563:  movl   %eax, (%esp)
0x150566:  calll  0x1be5fe                  ; symbol stub for: objc_msgSendSuper2
0x15056b:  movl   %eax, %esi
0x15056d:  testl  %esi, %esi
0x15056f:  je     0x150840                  ; -[PFObject(Private) init] + 779 at PFObject.m:186
0x150575:  movl   0xd44cd(%ebx), %edi
0x15057b:  cmpl   $0x0, (%esi,%edi)
0x15057f:  jne    0x1505ef                  ; -[PFObject(Private) init] + 186 at PFObject.m:165
0x150581:  movl   0xd41e1(%ebx), %eax
0x150587:  movl   %eax, -0x24(%ebp)
0x15058a:  movl   0xd28d9(%ebx), %eax
0x150590:  movl   %eax, -0x20(%ebp)
0x150593:  movl   %eax, 0x4(%esp)
0x150597:  movl   %esi, (%esp)
0x15059a:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x15059f:  movl   0xd2e6d(%ebx), %ecx
0x1505a5:  movl   %eax, 0x8(%esp)
0x1505a9:  movl   %ecx, 0x4(%esp)
0x1505ad:  movl   -0x24(%ebp), %eax
0x1505b0:  movl   %eax, (%esp)
0x1505b3:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x1505b8:  movl   -0x20(%ebp), %eax
0x1505bb:  movl   %eax, 0x4(%esp)
0x1505bf:  movl   %esi, (%esp)
0x1505c2:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x1505c7:  movl   0xd3c91(%ebx), %ecx
0x1505cd:  movl   %ecx, 0x4(%esp)
0x1505d1:  movl   %eax, (%esp)
0x1505d4:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
----> 0x1505d9:  movl   %eax, (%esp)              <----------------------------- It gets stuck here.
0x1505dc:  calll  0x1be628                  ; symbol stub for: objc_retainAutoreleasedReturnValue
0x1505e1:  movl   (%esi,%edi), %ecx
0x1505e4:  movl   %eax, (%esi,%edi)
0x1505e7:  movl   %ecx, (%esp)
0x1505ea:  calll  0x1be610                  ; symbol stub for: objc_release
0x1505ef:  movl   0xd41d5(%ebx), %eax
0x1505f5:  movl   0xd2875(%ebx), %ecx
0x1505fb:  movl   %ecx, -0x20(%ebp)
0x1505fe:  movl   %ecx, 0x4(%esp)
0x150602:  movl   %eax, (%esp)
0x150605:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x15060a:  movl   -0x1c(%ebp), %ecx
0x15060d:  movl   %ecx, 0x4(%esp)
0x150611:  movl   %ecx, %edi
0x150613:  movl   %eax, (%esp)
0x150616:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x15061b:  movl   0xd44d5(%ebx), %ecx
0x150621:  movl   (%esi,%ecx), %edx
0x150624:  movl   %eax, (%esi,%ecx)
0x150627:  movl   %edx, (%esp)
0x15062a:  calll  0x1be610                  ; symbol stub for: objc_release
0x15062f:  movl   0xd3fe1(%ebx), %eax
0x150635:  movl   0xd3651(%ebx), %ecx
0x15063b:  movl   %ecx, -0x24(%ebp)
0x15063e:  movl   %ecx, 0x4(%esp)
0x150642:  movl   %eax, (%esp)
0x150645:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x15064a:  movl   %eax, (%esp)
0x15064d:  calll  0x1be628                  ; symbol stub for: objc_retainAutoreleasedReturnValue
0x150652:  movl   0xd44d9(%ebx), %ecx
0x150658:  movl   (%esi,%ecx), %edx
0x15065b:  movl   %eax, (%esi,%ecx)
0x15065e:  movl   %edx, (%esp)
0x150661:  calll  0x1be610                  ; symbol stub for: objc_release
0x150666:  movl   0xd3ff9(%ebx), %eax
0x15066c:  movl   %eax, -0x28(%ebp)
0x15066f:  movl   0xd407d(%ebx), %eax
0x150675:  movl   -0x20(%ebp), %ecx
0x150678:  movl   %ecx, 0x4(%esp)
0x15067c:  movl   %eax, (%esp)
0x15067f:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x150684:  movl   %edi, 0x4(%esp)
0x150688:  movl   %eax, (%esp)
0x15068b:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x150690:  movl   %eax, %edi
0x150692:  movl   0xd2e71(%ebx), %eax
0x150698:  movl   %edi, 0x8(%esp)
0x15069c:  movl   %eax, 0x4(%esp)
0x1506a0:  movl   -0x28(%ebp), %eax
0x1506a3:  movl   %eax, (%esp)
0x1506a6:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x1506ab:  movl   %eax, (%esp)
0x1506ae:  calll  0x1be628                  ; symbol stub for: objc_retainAutoreleasedReturnValue
0x1506b3:  movl   0xd44dd(%ebx), %ecx
0x1506b9:  movl   (%esi,%ecx), %edx
0x1506bc:  movl   %eax, (%esi,%ecx)
0x1506bf:  movl   %edx, (%esp)
0x1506c2:  calll  0x1be610                  ; symbol stub for: objc_release
0x1506c7:  movl   %edi, (%esp)
0x1506ca:  calll  0x1be610                  ; symbol stub for: objc_release
0x1506cf:  movl   0xd3fe1(%ebx), %eax
0x1506d5:  movl   -0x24(%ebp), %ecx
0x1506d8:  movl   %ecx, 0x4(%esp)
0x1506dc:  movl   %eax, (%esp)
0x1506df:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x1506e4:  movl   %eax, (%esp)
0x1506e7:  calll  0x1be628                  ; symbol stub for: objc_retainAutoreleasedReturnValue
0x1506ec:  movl   0xd44e1(%ebx), %ecx
0x1506f2:  movl   (%esi,%ecx), %edx
0x1506f5:  movl   %eax, (%esi,%ecx)
0x1506f8:  movl   %edx, (%esp)
0x1506fb:  calll  0x1be610                  ; symbol stub for: objc_release
0x150700:  movl   0xd3fe1(%ebx), %eax
0x150706:  movl   -0x20(%ebp), %edi
0x150709:  movl   %edi, 0x4(%esp)
0x15070d:  movl   %eax, (%esp)
0x150710:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x150715:  movl   -0x1c(%ebp), %ecx
0x150718:  movl   %ecx, 0x4(%esp)
0x15071c:  movl   %eax, (%esp)
0x15071f:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x150724:  movl   0xd44e5(%ebx), %ecx
0x15072a:  movl   (%esi,%ecx), %edx
0x15072d:  movl   %eax, (%esi,%ecx)
0x150730:  movl   %edx, (%esp)
0x150733:  calll  0x1be610                  ; symbol stub for: objc_release
0x150738:  movl   0xd3fe1(%ebx), %eax
0x15073e:  movl   %edi, 0x4(%esp)
0x150742:  movl   %eax, (%esp)
0x150745:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x15074a:  movl   -0x1c(%ebp), %edi
0x15074d:  movl   %edi, 0x4(%esp)
0x150751:  movl   %eax, (%esp)
0x150754:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x150759:  movl   0xd44e9(%ebx), %ecx
0x15075f:  movl   (%esi,%ecx), %edx
0x150762:  movl   %eax, (%esi,%ecx)
0x150765:  movl   %edx, (%esp)
0x150768:  calll  0x1be610                  ; symbol stub for: objc_release
0x15076d:  movl   0xd44ed(%ebx), %eax
0x150773:  movl   (%esi,%eax), %ecx
0x150776:  movl   $0x0, (%esi,%eax)
0x15077d:  movl   %ecx, (%esp)
0x150780:  calll  0x1be610                  ; symbol stub for: objc_release
0x150785:  movl   0xd44f1(%ebx), %eax
0x15078b:  movl   (%esi,%eax), %ecx
0x15078e:  movl   $0x0, (%esi,%eax)
0x150795:  movl   %ecx, (%esp)
0x150798:  calll  0x1be610                  ; symbol stub for: objc_release
0x15079d:  movl   0xd44f5(%ebx), %eax
0x1507a3:  movl   (%esi,%eax), %ecx
0x1507a6:  movl   $0x0, (%esi,%eax)
0x1507ad:  movl   %ecx, (%esp)
0x1507b0:  calll  0x1be610                  ; symbol stub for: objc_release
0x1507b5:  movl   0xd4125(%ebx), %eax
0x1507bb:  movl   -0x20(%ebp), %ecx
0x1507be:  movl   %ecx, 0x4(%esp)
0x1507c2:  movl   %eax, (%esp)
0x1507c5:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x1507ca:  movl   %edi, 0x4(%esp)
0x1507ce:  movl   %eax, (%esp)
0x1507d1:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x1507d6:  movl   %eax, %edi
0x1507d8:  movl   0xd2e75(%ebx), %eax
0x1507de:  movl   %edi, 0x8(%esp)
0x1507e2:  movl   %eax, 0x4(%esp)
0x1507e6:  movl   %esi, (%esp)
0x1507e9:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x1507ee:  movl   %edi, (%esp)
0x1507f1:  calll  0x1be610                  ; symbol stub for: objc_release
0x1507f6:  movl   0xd44d1(%ebx), %ecx
0x1507fc:  movl   0xd44f9(%ebx), %eax
0x150802:  cmpb   $0x0, (%esi,%ecx)
0x150806:  je     0x150818                  ; -[PFObject(Private) init] + 739 at PFObject.m:176
0x150808:  movb   $0x0, (%esi,%eax)
0x15080c:  movl   0xd44fd(%ebx), %eax
0x150812:  movb   $0x0, (%esi,%eax)
0x150816:  jmp    0x150838                  ; -[PFObject(Private) init] + 771 at PFObject.m:183
0x150818:  movb   $0x1, (%esi,%eax)
0x15081c:  movl   0xd44fd(%ebx), %eax
0x150822:  movb   $0x1, (%esi,%eax)
0x150826:  movl   0xd2e79(%ebx), %eax
0x15082c:  movl   %eax, 0x4(%esp)
0x150830:  movl   %esi, (%esp)
0x150833:  calll  0x1be5f8                  ; symbol stub for: objc_msgSend
0x150838:  movl   %esi, (%esp)
0x15083b:  calll  0x1be616                  ; symbol stub for: objc_retain
0x150840:  movl   %esi, (%esp)
0x150843:  calll  0x1be610                  ; symbol stub for: objc_release
0x150848:  movl   %esi, %eax
0x15084a:  addl   $0x2c, %esp
0x15084d:  popl   %esi
0x15084e:  popl   %edi
0x15084f:  popl   %ebx
0x150850:  popl   %ebp
0x150851:  retl   

可能是什么问题?

的TableView

    override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell {
    let cell = tableView!.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath!) as UITableViewCell

    var persoon:PFObject = self.timeLineData.objectAtIndex(indexPath!.row) as PFObject

    let voornaam = persoon.objectForKey("voornaam") as String
    let achternaam = persoon.objectForKey("achternaam") as String

    //De Volledige persoonsnaam
    cell.imageView.image = UIImage(named: "dummy")
    cell.textLabel.font = UIFont(name: "Avenir Nex", size: 12)
    cell.textLabel.text = "\(voornaam) \(achternaam)"

    return cell
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "persoonSegue"{
        if let indexPath = self.tableView.indexPathForSelectedRow(){
            let persoonVC = segue.destinationViewController as DetailVC
            persoonVC.persoonData = timeLineData.objectAtIndex(indexPath.row) as PFObject
        }
    }
}

func loadData(name:String){
    timeLineData.removeAllObjects()

    var firstName = PFQuery(className: "Newfamilie")
    firstName.whereKey("voornaam", containsString: name)

    var lastName = PFQuery(className: "Newfamilie")
    lastName.whereKey("achternaam", containsString: name)

    var query = PFQuery.orQueryWithSubqueries([firstName, lastName])
    query.orderByAscending("achternaam")
    query.limit = 200
    query.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]!, error: NSError!) -> Void in
        if error == nil {
            for object in objects{
                let naam:PFObject = object as PFObject
                self.timeLineData.addObject(naam)
            }

            self.tableView.reloadData()
            self.refreshTimeLineControl.endRefreshing()

            println("\(self.timeLineData.count)")
        }
    }
}

DetailVC

class DetailVC: UIViewController {

@IBOutlet var voornaam: UILabel! = UILabel()
@IBOutlet var achternaam: UILabel! = UILabel()
@IBOutlet var dateOfBirth: UILabel! = UILabel()

var persoonData:PFObject = PFObject()

override func viewDidLoad() {
    super.viewDidLoad()

    let voornaam = persoonData.objectForKey("voornaam") as String
    let achternaam = persoonData.objectForKey("achternaam") as String
    let datum = persoonData.objectForKey("geboortedatum") as String

    self.voornaam.text = voornaam
    self.achternaam.text = achternaam
    self.dateOfBirth.text = datum
}

1 个答案:

答案 0 :(得分:3)

要解决此错误,您应该在.m文件

中的子类中实现这两个方法
+ (void)load
{
    [self registerSubclass];
}

+(NSString *)parseClassName
{
    return @"YOUR CLASS NAME HERE";
}

然后在.h文件中声明它们

+(NSString *)parseClassName;
+(vendor *)createVendorWithObject:(PFObject *)object;