我希望将ABRecordRef的ABRecordRef存储在自己的应用程序中,而不依赖于AdressBook中的条目。在遍历了堆栈溢出和苹果开发者站点之后,我发现这是最好的方法:
如果正确的话,您将需要一个NSCoding一致性NSObject子类与ABRecordRef的所有值,至少函数initWithABRecordRef和getABRecordRefFromPeopleData (假设一个人命名为类peopleData),initWithABRecordRef将把来自ABRecordRef的所有值(如果不是null)填充到自己类的实例中,getABRecordRefFromPeopleData将返回一个ABRecordRef不透明类型,其中存储在自己类的实例中的数据。
我的问题是:
我想知道是否有人已经这样做了,因为我可以想象,其他人之前也遇到了同样的问题。如果是这样的话,掌握这个类会很麻烦,如果不是的话,我会自己试一试,如果需要的话,我会把结果加载到这里。也许你知道更好的方法?
如果您确实实现了一个解决方案,请共享它。如果你也需要的话,我很乐意和你一起工作。
编辑:
我现在开始做这件事,(正如我所预料的)我遇到了一些不清楚的问题。当谈到kABStringPropertyType值时,我的概念是非常直接的。小例子:
@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.I做同样的事情,让我成为了一个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;
}现在我不是shure,如何在多个值上完成剩下的任务。我可以像对字符串那样对NSMutableArray进行编码和解码吗?还是必须为emailList中的所有电子邮件设置一个键?
我怎么才能把这该死的东西放回returnRecord呢?
发布于 2014-06-03 13:10:52
查看使用libsqlite3.dylib并创建一个sql数据库,该数据库将访问为所有属性生成的平面文件。
带有iOS库的示例sqlite3项目如下所示:
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
https://stackoverflow.com/questions/7150812
复制相似问题