[問題] mutablearray deep copy?

看板MacDev作者 (尋找奶昔)時間13年前 (2012/10/11 00:57), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/1
目前在做 table view 的 search 問題 所用到的 dictionary 都是存在 mutablearray 中 在搜尋後會改變 dictionary 中的 array 所以當按下 取消時要把 整個 mutablearray 中的資料復原 所以就需要用到 mutablearray 的 deep copy 現在找到的資料都是使用 [[NSMutableArray alloc] initWithArray:xxxx copyItem:YES]; 做 不過 這樣子 做完後 都會當掉 不知道是什麼問題 請問 mutablearray 的 deep copy 這樣寫是對的嘛@@ 架構是長這樣子的 mutablearray------Dictionary-------mutablearray | |--mutablearray | |--mutablearray | |----Dictionary-------mutablearray |--mutablearray |--mutablearray ........... 不知道有沒有辦法連 第三層的資料都複製過去QQ 感謝各位大大的收看 -- 公告 D. #1ByBycco (DSLR) [ptt.cc] [作品] 台灣山 → sorkayi :白目 05/17 14:52 D.罵人白目違反 3-4 人身攻擊相關規定,sorkayi 警告一次。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.2.251

10/11 02:24, , 1F
你為什麼要在搜尋的時候改變原本的資料? @_@
10/11 02:24, 1F

10/11 02:24, , 2F
把搜尋出來的東西放到另外一個 array 不行嗎?
10/11 02:24, 2F
我的想法是 當我要 reset search 時 只要將 原本的資料覆蓋到 被改動的資料中就行了 接著在 reload 而且我也在想說要複製原本的資料 是不是那個方法也有問題 跑到那行都會爆掉 @@ 所以才想上來問看看有沒有 deep copy 的方法 ※ 編輯: sorkayi 來自: 140.128.88.207 (10/11 10:22) :P 後來才發現我眼殘 = = 在 copy original data 時 不是用那個 deep copy 的方法 = = 但怎麼 copy 過去後 資料沒有 全部過去 好像只有到 dictionary 而已 第三層的資料就沒有回復了 ※ 編輯: sorkayi 來自: 140.128.88.207 (10/11 11:26) 自問自答 後來我加入一個 isSearch 的 flag 然後把儲存的 mutable 改成是要儲存搜尋後的結果 原始資料不動 在產生 tableview cell 時加入判斷 if (isSearch) 使用 copy data else 使用 original data 這樣就解決了 感謝 1F 給我的靈感 :P ※ 編輯: sorkayi 來自: 122.117.2.251 (10/12 10:11)
文章代碼(AID): #1GTQaD9i (MacDev)