저는 코딩의 영역에 새로운 경험이 있습니다. Firebase로 tableView를 구현하려고합니다.Firebase + Swift : tableView의 행을 삭제할 수 없습니다.
- 사용자가 입력 자신이 좋아하는 위치
- 은 (내가 여기 유레카 사용) 사용자가에서 특정 옵션을 선택하기 위해 폼을 만들고 수있는있는 tableView를 사용하여 '설정'페이지 만들기 : 내가 달성하기 위해 시도하고하다 설정 페이지에서 즐겨 찾기 그들은 입력
- 은 삭제를 허용 양식이 작동하려면, 내가 user.uid에 의해 필터링 AppDelegate에에서 중포 기지의 데이터를 가져 그 '즐겨 찾기'
위해. '즐겨 찾기 설정'을 채 웁니다. 'settings'에서 commitEdittingStyle을 사용하여 행을 삭제하려고하면 잘못된 행 번호의 오류가 발생합니다. 나는 여러 가지 해결책을 찾기 위해 노력했고 또한 dispatch_async 시도했다. 그러나 그것은 어떻게 든 단지 나의 문제를 아주 해결하지 않는다. 내 코드의 일부 조각은 다음과 같이 '잘못된 갱신 : 잘못된 수
public var setUpFavLocations: [(String)] = []
public var favLocDatabase: [FIRDataSnapshot]! = []
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var ref: FIRDatabaseReference!
var _refHandle: FIRDatabaseHandle!
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
FIRApp.configure()
let favLocVC: UITableViewController = FavLocationsTableViewController(style: UITableViewStyle.Plain)
ref = FIRDatabase.database().reference()
if let user = FIRAuth.auth()?.currentUser {
self.ref.child("settings").queryOrderedByChild("user").queryEqualToValue(user.uid).observeEventType(.ChildAdded, withBlock: { (snapshot) in
favLocDatabase.append(snapshot)
let insertionIndexPath = NSIndexPath(forRow: favLocDatabase.count - 1, inSection: 0)
favLocVC.tableView.insertRowsAtIndexPaths([insertionIndexPath], withRowAnimation: .Automatic)
})
self.ref.child("settings").queryOrderedByChild("user").queryEqualToValue(user.uid).observeEventType(.ChildAdded, withBlock: { (snapshot) in
setUpFavLocations.append(snapshot.value?["favLocation"] as! String)
})
//At FavLocationsTableViewController, aka at the settings page
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print("count \(setUpFavLocations.count)")
return setUpFavLocations.count
}
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
if let user = FIRAuth.auth()?.currentUser {
let row = favLocDatabase[indexPath.row]
self.ref.child("settings").queryOrderedByChild("user").queryEqualToValue(user.uid).observeEventType(.ChildRemoved, withBlock: { (snapshot) -> Void in
favLocDatabase.removeAtIndex(indexPath.row)
self.tableView.deleteRowsAtIndexPaths([NSIndexPath(forRow: indexPath.row, inSection: 0)], withRowAnimation: .Automatic)
})
row.ref.removeValue()
}
}
}
이 때문에, 이유 캐치되지 않는 예외
'NSInternalInconsistencyException '나에게 응용 프로그램을 종료 다음과 같은 오류
을 던졌습니다 수행 업데이트 (5) 후 기존 섹션에 포함 된 행 수는 업데이트 (5) 이전에 해당 섹션에 포함 된 행 수, 더하기 또는 빼기 삽입 된 행 수와 같아야합니다 또는 d (0은 0으로 이동하고 0은 밖으로 이동했습니다.) 안팎으로 이동 된 행 수를 더하거나 뺍니다. '(0이 삽입 됨, 이 삭제됨)
Pls help, 나는 꽤 오래 여기에 붙어 있습니다. 매우 감사.
잠깐, 유레카를 사용한다고 말하지 않았습니까? 왜 유레카도 여기에 사용하지 않으시겠습니까? 훨씬 쉽습니다! – Sweeper
@Sweeper이 목적에 가장 적합한 유레카 셀을 찾을 수 없습니다. – Koh
데이터베이스에서 항목을 두 번 제거 할 수 있습니까 ('removeAtIndex' 및'removeValue')? 그리고 매개 변수에 전달 된 (실제로는 같은) 경로를 사용하는 대신 새로운 색인 경로를 만드는 이유는 무엇입니까? – vadian