[Mac M2 Pro 12CPU, Sonoma 14.5, wxWidgets 3.2.5]
設定データを保存する方法としてCSVを考えていましたが、macOSアプリですからOS固有の方法を活用してみたくなりました。
Objective-C++で書いた関数を使って設定データをUserDefaultsで管理するようにしました。
以前開発していたBBSブラウザと同様、cppファイルとmmファイルがプロジェクトに混在する形となります。
![](https://mowareblog.net/wp-content/uploads/2024/07/71889d178fdcf73da1e3c5820976c845-1024x736.png)
![](https://mowareblog.net/wp-content/uploads/2024/07/e27ef8ce3eff7ab620145117209e2baf.png)
#include <iostream>
#import <Foundation/Foundation.h>
void saveToUserDefaults(const std::string& key, const std::string& value) {
NSString *nsKey = [NSString stringWithUTF8String:key.c_str()];
NSString *nsValue = [NSString stringWithUTF8String:value.c_str()];
[[NSUserDefaults standardUserDefaults] setObject:nsValue forKey:nsKey];
[[NSUserDefaults standardUserDefaults] synchronize];
}
std::string getFromUserDefaults(const std::string& key) {
NSString *nsKey = [NSString stringWithUTF8String:key.c_str()];
NSString *nsValue = [[NSUserDefaults standardUserDefaults] stringForKey:nsKey];
if (nsValue) {
return std::string([nsValue UTF8String]);
} else {
return "";
}
}