2016-06-21 5 views
0

Bear with me 나는 Swift에 완전히 새 것입니다. ClassList UITableView에서 셀을 선택하여 또 다른 UIViewController에 segue하려고합니다. 그러나 무엇을 시도하든, 나는 항상 동일한 Sigabrt 오류. 나는 많은 연구를했고, 내가들은 이야기의 대부분은 그것이 메인 스토리 보드의 남은/미사용 연결에서 왔다고 말했다. 그러나 나는 체크했고 아무 것도 가지고 있지 않았다. 내가 실수 한 것은 모두 lldb이고 나는 bt를 넣을 때 객관적인 c 결과를 이해할 수 없다. 필요하다면 나는 오류 출력을 게시 할 예정입니다 그러나 지금이 내 코드입니다 (죄송는 너무 오래 나는 밖으로 중요한 무언가를 떠나 위험을 감수하고 싶지 않았다) 내가 거기에 오류가 계속 곳입니다Swift SIGABRT 오류 (잘못된 연결 없음)

import UIKit 
import Firebase 
import FirebaseDatabase 

var classes = [String]() 
var CurrentClass = "" 

class TeacherHomeScreen : UIViewController, UITableViewDelegate, UITableViewDataSource{ 


@IBOutlet var ClassList: UITableView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    if NSUserDefaults.standardUserDefaults().objectForKey(CurrentUser) != nil{ 
     classes = NSUserDefaults.standardUserDefaults().objectForKey((FIRAuth.auth()?.currentUser?.email)!)! as! [String] 
    } 
    else{ 
     classes = [""] 
    } 
    viewDidAppear(true) 
} 

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    self.performSegueWithIdentifier("SelectedClassSegue", sender: indexPath) 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ 
    return classes.count 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ 
    let ClassCell = tableView.dequeueReusableCellWithIdentifier("ClassCell", forIndexPath: indexPath)   
    ClassCell.textLabel?.text = classes[indexPath.row] 
    // ClassCell.ProjectButton.tag = indexPath.row 
    return ClassCell 
} 

override func viewDidAppear(animated: Bool) { 
    ClassList.reloadData() 
} 

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath){ 
    if editingStyle == UITableViewCellEditingStyle.Delete{ 
     classes.removeAtIndex(indexPath.row) 
     NSUserDefaults.standardUserDefaults().setObject(classes, forKey: CurrentUser) 
     ClassList.reloadData() 
    } 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "TeacherLogOut"{ 
     CurrentUser = "" 
     try! FIRAuth.auth()!.signOut() 
    } 
    if segue.identifier == "SelectedClassSegue"{ 
     _ = segue.destinationViewController as! SelectedClass 

    } 

} 
} 

UPDATE

내가 셀 아무것도 클릭에이 코드를로드 할 때 지금, 그것은 단지 강조하고 더 SEGUE가 발생하지 않습니다 발생합니다. 여기

import Foundation 

import UIKit 
import Firebase 
import FirebaseDatabase 


var CurrentClass = "" 

var classes = [String]() 

class TeacherHomeScreen : UIViewController, UITableViewDelegate, UITableViewDataSource{ 


@IBOutlet var ClassList: UITableView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    if NSUserDefaults.standardUserDefaults().objectForKey(CurrentUser) != nil{ 

     classes = NSUserDefaults.standardUserDefaults().objectForKey((FIRAuth.auth()?.currentUser?.email)!)! as! [String] 
    } 
    else{ 
     classes = [""] 
    } 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ 

    return classes.count 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ 

    let ClassCell = tableView.dequeueReusableCellWithIdentifier("ClassCell", forIndexPath: indexPath)   
    ClassCell.textLabel?.text = classes[indexPath.row] 

    // ClassCell.ProjectButton.tag = indexPath.row 

    return ClassCell 
    } 
override func viewDidAppear(animated: Bool) { 
    ClassList.reloadData() 
} 

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath){ 

    if editingStyle == UITableViewCellEditingStyle.Delete{ 

     classes.removeAtIndex(indexPath.row) 

     NSUserDefaults.standardUserDefaults().setObject(classes, forKey: CurrentUser) 

     ClassList.reloadData() 

    } 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "TeacherLogOut"{ 

     CurrentUser = "" 
     try! FIRAuth.auth()!.signOut() 
    } 
    // if segue.identifier == "SelectedClassSegue"{ 

     // _ = segue.destinationViewController as! SelectedClass 

    } 

} 

답변

1
이 prepareForSegue에,이 오류가 발생하지 않습니다 일부 사용되지 않는 변수가 있지만 사용하지 않는 변수가 그런데 빈 채로

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    self.performSegueWithIdentifier("SelectedClassSegue", sender: nil) 
} 

에 보낸 Indexpath 변경

코드입니다 그래서 제안하고 싶습니다 : -

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "TeacherLogOut"{ 
      CurrentUser = "" 
      try! FIRAuth.auth()!.signOut() 
     } 
     if segue.identifier == "SelectedClassSegue"{ 
     //_ = segue.destinationViewController as! SelectedClass 
     //This variable is unused , so no need to put this line 
     } 
} 
+0

이것은 정상적으로 애플 리케이션 위임으로 SIGABRT 오류를 이동 한 것 같습니다. 나는 breakpoints 예외를 설정하고 문제가 출력 의이 부분에서 줄기 ... 최소한 내가 말할 수있는 것 같습니다. 어떤 아이디어 ??? 프레임 # 1 : 0x0000000101a94d3d CoreFoundation'- [NSObject (NSObject) doesNotRecognizeSelector :] + 205 –

+0

전체 오류를 표시하고 오류를 어디서 구합니까? 질문을 업데이트하십시오. –

관련 문제