gpt4 book ai didi

iphone - 构建 NSObject 以将 ABRecordRef 数据保存到本地

转载 作者:行者123 更新时间:2023-12-01 17:00:49 24 4
gpt4 key购买 nike

我想存储 ContentABRecordRef在我自己的应用程序中独立于 AdressBook 中的条目.在通过 stackoverflow 和苹果开发者网站交叉阅读后,我发现这是最好的方法:

如果做对了,就需要一个 NSCoding符合 NSObject所有值为 ABRecordRef 的子类和至少函数initWithABRecordRefgetABRecordRefFromPeopleData (假设一个人将他的类(class)命名为peopleData),其中initWithABRecordRef将填充 ABRecordRef 中的所有值(如果不为空)到自己的类的实例和getABRecordRefFromPeopleData返回 ABRecordRef不透明类型,数据存储在自己类的实例中。

我的问题:

我想知道那里是否有人已经这样做了,因为我可以想象,其他人之前也遇到过完全相同的问题。如果是这样,上这门课会很糟糕,如果不是,我会自己尝试一下,如果需要的话,把结果加载到这里。
也许您甚至知道更好的方法来做到这一点?

如果您确实实现了解决方案,请分享。如果你需要同样的,我会很感激一起解决这个问题。

编辑:

我现在开始研究这件事,(正如我所料)我遇到了一些不清楚的问题。
至于kABStringPropertyType值(value)观我的概念很简单。小例子:

@implementation RealRecord
@synthesize firstName; //NSString

- (id)initWithRecordRef:(ABRecordRef)record{

//Single valued entrys
NSString *contactName = (NSString *)ABRecordCopyValue(record, kABPersonFirstNameProperty);
firstName=contactName;
[contactName release];
return self;
}

- (id)initWithCoder:(NSCoder *)aDecoder{
//single value entrys
self.firstName= [aDecoder decodeObjectForKey:@"firstName"];
return self;
}

- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:firstName forKey:@"firstName"];
}

- (ABRecordRef)returnABRecordRefFromRealRecord{
ABRecordRef returnRecord =ABPersonCreate();
ABRecordSetValue(returnRecord, kABPersonFirstNameProperty, firstName, NULL);
return returnRecord;
}

这工作正常。现在我不太清楚如何用 kABMultiStringPropertyType 做同样的事情.我给我做了一个 NSMutableArray emailList 并继续这样:
- (id)initWithRecordRef:(ABRecordRef)record{

//Multi valued entrys
ABMutableMultiValueRef email=ABRecordCopyValue(record, kABPersonEmailProperty);
for (int i = 0; i < ABMultiValueGetCount(email); i++) {
NSString *anEmail = [(NSString*)ABMultiValueCopyValueAtIndex(email, i) autorelease];
[emailList addObject:anEmail];
}
return self;
}

现在我不舒尔,如何在多值上完成其余的任务。我可以像使用字符串那样对 NSMutableArray 进行编码和解码,还是必须为 emailList 中的所有电子邮件设置一个 key ? ?

我怎样才能把这该死的东西放回returnRecord?

最佳答案

研究使用 libsqlite3.dylib 并创建一个 sql 数据库,该数据库将访问为所有属性生成的平面文件。

带有 sqlite3 库的示例 iOS 项目在这里:

http://www.techotopia.com/index.php/An_Example_SQLite_based_iOS_7_Application

&
在此处使用 ABAddressbook 为联系人的多值属性执行此操作的详细信息:

http://linuxsleuthing.blogspot.com/2012/10/addressing-ios6-address-book-and-sqlite.html

关于iphone - 构建 NSObject 以将 ABRecordRef 数据保存到本地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7150812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com