作者sorkayi (寻找奶昔)
看板MacDev
标题[问题] mutablearray deep copy?
时间Thu Oct 11 00:57:45 2012
目前在做 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
1F:→ zonble:你为什麽要在搜寻的时候改变原本的资料? @_@ 10/11 02:24
2F:→ zonble:把搜寻出来的东西放到另外一个 array 不行吗? 10/11 02:24
我的想法是 当我要 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)