ABRecordRefを使用したNSMutableArrayがあります
ディスクに保存したいのですが、同僚からシリアル化するように言われました。彼が何について話しているのか分かりませんか?
私はウェブをサーフィンして、たくさんの「解決策」を見てきましたが、それがどのように機能するのか、なぜそれが必要なのかわかりません
ABRecordRefを使用したNSMutableArrayがあります
ディスクに保存したいのですが、同僚からシリアル化するように言われました。彼が何について話しているのか分かりませんか?
私はウェブをサーフィンして、たくさんの「解決策」を見てきましたが、それがどのように機能するのか、なぜそれが必要なのかわかりません
ABRecordは、対応するフリーダイヤルのブリッジされたObjective-cクラスのない不透明なCoreFoundationクラスです。それがObjective-Cクラスであれば、@Toroが示唆するようにNSCoderを使用することもできます。
可変配列がABPerson参照のリストであると仮定すると、次のようなことができます。
NSMutableArray newArr = [NSMutableArray array];
for(id obj in mutableArray) {
ABRecordRef ref = (ABRecordRef)obj;
ABRecordID recordID = ABRecordGetRecordID(ref);
NSValue* v = [NSValue value:recordID withObjCType:@encode(ABRecordID)];
[newArr addObject:v];
}
// newArr is a list of NSValues holding ABRecordIDs, which can be serialized.
シリアル化を解除するときに、各NSValueからABRecordIDを取得し、その上でABAddressBookGetPersonWithRecordID()を呼び出して、ABRecordRefを取得します。ユーザーによってレコードが削除され、その結果、この関数からNULL値が返される可能性があることに注意してください。