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を入れます。