2014-02-05 53 views
-1

我從給定的NSArray(的NSDictionaries)以相反的順序形成一個簡單的UITableView使新加入的細胞會出現在最上面:如何排序依據的NSArray的人工分揀的UITableView爲了

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    cell.textLabel.text = [(NSDictionary*)list[list.count - indexPath.row - 1] objectForKey:@"name"]; 

    return cell; 
} 

該表可然後由用戶手動排序:

http://i.stack.imgur.com/kn8BV.png

我的問題是如何得到,該表將保持其新秩序下一次用戶啓動應用程序的方式排序的數組。

+1

您可以嘗試在字典中添加索引,以便保持添加的所有項目的索引值。現在你可以根據索引來排列數組。 – Ashutosh

+0

看看像'canMoveCellAtIndexPath'這樣的tableview代表 – preetam

+0

@Ashu,這應該被添加爲答案(關於在移動期間維護字典的更多細節) – Wain

回答

0

我認爲他們是一個NSdictionary與你的數組,你正在從這個數組的表視圖加載數據。現在你可以做的只是在你的字典中添加一個關鍵字爲「索引」的對象。 現在您可以按增加或減少索引的順序排列數組,然後根據需要重新加載您的表視圖。您可以使用以下代碼來排列數據:

NSSortDescriptor *lowestToHighest = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES]; 
[yourAray sortUsingDescriptors:[NSMutableArray arrayWithObject:lowestToHighest]]; 
+0

謝謝!我認爲這會做。 – Hodit

0

您應該將字典保存在本地文件(即JSON)中,並在用戶下次啓動時從存儲的文件中加載它。你可以從這個鏈接中獲取有關以JSON保存文件的幫助。 Generate JSON string from NSDictionary

+0

這是如何處理訂購信息的? – Wain

+0

建立一個數據源對象。從該數據源加載表格內容。對錶格重新排序時,對數據源數組中的對象重新排序。然後將其保存爲JSON。 – GMJigar

+0

我在磁盤上存儲數據源時沒有問題。我只是不知道如何根據tableView的順序對它進行排序。 – Hodit