前回までは URL に適合するクッキーの検索は、格納してある全てのクッキーを対象に行っていた。これではクッキーの数が増えた場合に効率が悪いので少し改良を加える。複雑なことはやらず、できるだけ単純にしてみよう。
具体的にはドメインをキーとしたハッシュ(辞書)を作り、その下に実際のクッキー配列を格納するようにする。
(イメージ)
NSMutableDictionary
|
|--key:".xcatsan.com"
| value: NSMutableDictionary
| |-- key:"/xxx", value={path="/", name="xxx", ..}
| |-- key:"/some/yyy", value={path="/some", name="yyy", ..}
| :
|
|--key:".co-co-adays.com"
| value: NSMutableDictionary
| |-- key:"/aaa", value={path="/", name="aaa", ..}
| |-- key:"/some/bbb", value={path="/some", name="bbb", ..}
| :
ドメイン名をキーとして取得できる値は NSMutableDictionary とする。path+name をキーとして実際のクッキーをその値として登録する。これによって domain+path+name でユニークが保たれる。
なおドメインは後方一致もありなので、単純なキー検索だけでは漏れが生じてしまう。
この為、検索時にはドメインの完全一致に加えて、後方一致も加える。
(イメージ)
www.japan.xcatsan.com のクッキーを検索する。
(1) www.japan.xcatsan.com をキーにして検索
(2) .japan.xcatsan.com をキーにして検索
(3) .xcatsan.com をキーにして検索
上記でヒットする配列群を前回までのロジックでチェックする。
(続く)