所以我有一個代表視頻庫的UITableView
。庫的數據源是一個NSMutableDictionary
,其中包含每個密鑰的NSMutableArray
。每個數組都包含一個數組,其中包含每個值的所有信息。同時插入行和刪除行。 UITableView
NSMutableDictionary
- > Foreach Key a NSMutableArray
包含 - >NSMutableArrays
。
tableSectionData
是我的數據源。
我一直在嘗試在第一部分上插入一行並在另一部分中刪除另一行。這是我正在使用的代碼:
編輯這是新的嘗試。我首先更新數據源,然後添加和刪除與我的dataSource建立索引的相應行。
[mainTableView beginUpdates];
NSMutableDictionary *clone = [[NSMutableDictionary alloc]
initWithDictionary:self.tableSectionData copyItems:YES];
for (NSString *key in [clone allKeys]) {
if([key isEqualToString:@"Videos available for download"]) {
for (NSArray *videoArray in [clone objectForKey:key]) {
if ([[videoArray objectAtIndex:0] isEqualToString:helper.videoName]) {
[[self.tableSectionData objectForKey:@"Downloaded videos"]
addObject:videoArray];
NSUInteger insertIndex = [[self.tableSectionData
objectForKey:@"Downloaded videos"]
indexOfObject:videoArray];
NSIndexPath *pathToInsert = [NSIndexPath
indexPathForRow:insertIndex inSection:0];
NSArray *indexesToAddition = [NSArray
arrayWithObject:pathToInsert];
[mainTableView insertRowsAtIndexPaths:indexesToAddition
withRowAnimation:UITableViewRowAnimationFade];
[[self.tableSectionData
objectForKey:@"Videos available for download"] removeObject:videoArray];
NSUInteger deleteIndex = [[self.tableSectionData
objectForKey:@"Videos available for download"] indexOfObject:videoArray];
NSIndexPath *pathToDelete = [NSIndexPath
indexPathForRow:deleteIndex inSection:1];
NSArray *indexesToDeletion = [NSArray arrayWithObject:
pathToDelete];
[mainTableView deleteRowsAtIndexPaths:indexesToDeletion
withRowAnimation:UITableViewRowAnimationFade];
}
}
}
}
[mainTableView endUpdates];
我想這會工作,因爲我必須先刪除行,如果我想插入一個(在情況下,我想兩者都做。)
特定的錯誤是:
'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (4) must be equal to the number of rows contained in that section before the update (3), plus or minus the number of rows inserted or deleted from that section (0 inserted, 0 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'
我知道什麼錯誤說,我沒有相應的行數的部分,但我沒有看到我的代碼上的錯誤,我登錄數據源,它對應於所需的結果。
任何幫助和建議將不勝感激!
我已經嘗試過這一點,但沒有奏效。我將堅持開始和結束更新! – Joze 2013-02-19 13:47:18