CSEDataManagerクラス - Cizzuk/CSE GitHub Wiki

CSEとCSE Extensionの両方で利用されているクラスで、CSEのデータの管理、主に読み書きをやってくれます。

先にいくつかの構造体と列挙型を挙げます。

Structure / Enum

CSEType

列挙型で、defaultCSE, privateCSE, quickCSEがあります。

CSEData

Encodableな構造体で、ひとつのカスタム検索エンジンの設定を表現できます。

DeviceCSEs

Identifiable, Hashableな構造体で、iCloudにアップロードするデバイスのカスタム検索エンジンの設定を扱うために利用されます。

iCloud関連機能はCloudKitManagerクラスが担当しているのでここでは割愛します。


ここからは利用可能な関数の説明を行います。

getCSEData

デバイスに保存されている指定されたカスタム検索エンジンのデータを、CSEData型で返します。

第一引数はCSETypeで検索エンジンの種類を指定します。デフォルトはdefaultCSEです。

id引数はString?型で、第一引数がquickCSEの時にのみ使用されます。デフォルトはnilです。Quick Search Engineのキーワードを指定します。

getAllQuickCSEData

デバイスに保存されている全てのQuick Search Engineのデータを、[String: CSEData]型で返します。

引数はありません。

parseCSEData

受け取った辞書型のカスタム検索エンジンのデータをCSEData型の状態にして返します。

第一引数は[String: Any]型で、カスタム検索エンジンのデータを入れてください。Stringの部分を見て、欠損しているデータはデフォルト値が設定され、不要なデータは無視されます。

id引数はString?型で、Quick Search Engineのキーワードを指定します。デフォルト値はnilです。

CSEDataToDictionary

受け取ったCSEData型のデータを[String: Any]型にして返します。主にUserDefaultsに保存したりする時に使用します。

第一引数はCSEData型で、変換して欲しいカスタム検索エンジンのデータを入れます。

第一引数が[String: CSEData]型の場合、複数のQuick Search Engineのデータとして扱われ、そのリストを[String: [String: Any]]型で返します。

parseDeviceCSEs

DeviceCSEs型のデータをDefault Search Engine, Private Search Engine, Quick Search Enginesのデータに分解します。

defaultCSE: CSEData, privateCSE: CSEData, quickCSE: [String: CSEData]で返されます。

第一引数はDeviceCSEs型で、分解して欲しいデバイスのデータを入れます。

saveCSEData

カスタム検索エンジンの設定をデバイスに保存し、可能な場合はiCloudにアップロードします。アップロードはCloudKitManagerクラスで行われます。

第一引数はCSEData型で、保存したいカスタム検索エンジンのデータを入れます。

第二引数がCSEType型の場合

指定された検索エンジンのデータとして保存します。デフォルト値はdefaultCSEです。

defaultCSEまたはprivateCSEでないと保存されません。

第二引数がString型?の場合

Quick Search Engineのデータとして保存されます。

第二引数に元のキーワードを入れます。nilでない場合は元のキーワードのデータを削除します。

第一引数のkeywordに変更先のキーワードを入れます、このキーワードのデータとして保存します。

replace引数にtrueを入れると、すでにキーワードが使用されている場合に上書きします。デフォルト値はfalseです。

この場合はエラーがthrowsされることもあります。エラーは同クラスのsaveCSEDataError列挙型で返されます。各エラーは以下の通りです。

keyBlank

変更先のキーワードが空白("")です。Quick Search Engineのキーワードは空白にできません。

urlBlank

URLが空白("")です。Quick Search EngineのURLは空白にできません。

keyUsed

変更先のキーワードがすでに使用されています。replaceがtrueの場合は発生しません。

replaceQuickCSEData

デバイスの全てのQuick Search Engineを上書きします。

これは主にiCloudからの復元時、あるいは初期化時に使用されます。

第一引数は[String: CSEData]型あるいは[String: [String: Any]]で、Quick Search Engineのリストを入れます。

deleteQuickCSE

デバイスからひとつのQuick Search Engineを削除します。

第一引数がString型の場合、キーワードを指定して削除します。

第一引数がIndexSet型の場合、インデックス番号を指定して削除します。

cleanPostData

CSEData型のpostから、不要なデータを削除して[String: String](/Cizzuk/CSE/wiki/String:-String)型で返します。

"key"または"value"が欠損していたり、空白("")だったりするデータを削除します。

第一引数は[String: String](/Cizzuk/CSE/wiki/String:-String)型でフィルタして欲しいPOST Dataを入れます。