2016-12-07 97 views
0

UITableViewController我用YapDatabase與地幔排序方式如下:YapDatabase排序混淆編輯更新

YapDatabaseViewSorting *viewSorting = [YapDatabaseViewSorting withObjectBlock:^NSComparisonResult(NSString *group, NSString *collection1, NSString *key1, XQBuilding *object1, NSString *collection2, NSString *key2, XQBuilding *object2) { 
    if ([group isEqualToString:XQBuildingsViewGroupName]) { 
     return [[object1 name] compare:[object2 name] options:NSNumericSearch]; 
    } 
    if ([group isEqualToString:XQPicturesGroup]) { 
     return [[object1 updatedAt] compare:[object2 updatedAt]]; 
    } 
    return NSOrderedSame; 
}]; 
YapDatabaseViewOptions *options = [[YapDatabaseViewOptions alloc] init]; 
options.isPersistent = NO; 

YapDatabaseView *databaseView = [[YapDatabaseView alloc] initWithGrouping:viewGrouping sorting:viewSorting versionTag:@"" options:options]; 

雖然使用的選項,我有時(當編輯的名稱列表中的改變已編輯項順序)不正確indexPath閱讀:

- (UITableViewCell*)editableTableView:(UITableView *)tableView simpleCellForIndexPath:(NSIndexPath *)indexPath 
    { 
     __block XQBuilding *building; 
     __block NSNumber *gla; 
     [self.readConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) { 
      building = [[transaction ext:XQBuildingListYapName] objectAtIndexPath:indexPath withMappings:self.tableViewAnimator.viewMappings]; 
      gla = [building glaWithTransaction:transaction]; 
     }]; 

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BuildingCell"]; 
     cell.textLabel.text = building.name; 
     cell.detailTextLabel.text = [NSString stringWithFormat: @"%@ sqm", formatDecimal(gla)]; 
     return cell; 
    } 

i。即在這種情況下,building與編輯不同。如何根據實際排序得到正確的indexPath

回答