AddressBook 地址簿  (电话簿) 访问与修改-IOS开发

2012-03-28  来源:本站原创  分类:转贴的文章  人气:1 

访问地址簿和单个联系人数据的接口是基于C语言的函数,接口传递对地址簿各种对象的引用作为参数。管理地址簿中条目的基类对象是 ABRecord。一个 ABRecord 可以表示一个人 或者一个群体 ABGroup 。无论何时,在界面上选中一条记录,或者使用框架进行查询返回一条结果,系统都会返回一个指向 ABRecord 的指针,标示为 ABRecordRef。与地址簿 API 的大部分交互都涉及使用 ABRecordRef 这个引用类型。

常用访问记录的函数如下:

ABRecordID ABRecordGetRecord(ABRecordRef record);

返回 ABRecordID ,代表了 记录在底层数据库中的ID号。具有唯一性。

ABRecordType ABRecordGetRecordType(ABRecordRef record);

返回记录类型。可以是 kABPersonType 和 kABGroupType

CFStringRef ABRecordCopyCompositeName(ABRecordRef record);

返回个人或群体完整名称。例:NSString* name = (NSString*)ABRecordCopyCompositeName(record);

一、高层地址簿函数

1.获得地址簿句柄

你必须先初始化地址簿,然后才能对其进读写操作。要获得一个地址簿句柄,可以使用 ABAddressBookCreate函数:

#import <AddressBook/AddressBook.h>
AddressBookRef ab = AddressBookCreate();

2. 保存地址簿

获得了地址簿的引用就可以对其进行操作了,操作完毕要记得保存:

CFErrorRef err;
BOOL success =  ABAddressBookSave(ab, &err);

如果不确定是否需要保存,则可以用:

BOOL hasUnsavedChanges = ABAddressBookHasUnsavedChanges(ab);

3.添加/删除 记录

    CFErrorRef err;
    BOOL success =ABAddressBookAddRecord(ab, record, &err);//添加
    CFErrorRef err;
    BOOL success =ABAddressBookRemoveRecord(ab, record, &err);//删除

二、查询地址簿

地址簿框架仅仅提供了基本的查询功能。可以用函数根据名字来查询多个记录,或者是根据特定记录 ID 查询单个记录。

1.获取地址簿中记录总个数:

CFIndex count = ABAddressBookGetPersonCount(ab);
    printf("%ld total entries in the address book\n",count);

2. 获取所有联系人:

 NSArray* array = (NSArray*)ABAddressBookCopyArrayOfAllPeople(ab);
    printf("Retrieved %d contacts\n",[array count]);

3. 在联系人列表中查询一个特定的名字:

 NSArray* arrayByName = (NSArray*)ABAddressBookCopyPeopleWithName(ab, CFSTR("Liu Wei"));

函数如其名,这个函数返回的并不是地址簿中实际的对象,而是拷贝。要访问这个数组的单个记录,就用NSArray的方法啦:

ABRecordRef myRecord = [arrayByName objectAtIndex:0];

除了通过名字查询,你也可以直接通过ID查询(假如你知道ID的话):

ABRecordRef myRecord = ABAddressBookGetPersonWithRecordID(ab, recordID);

三、创建记录

创建新的联系人可以使用 ABPersonCreate 函数。这样可以得到一个空记录,然后就可以向其中填充信息:

ABRecordRef record = ABPersonCreate();

四、操纵记录

一旦获得了 ABRecordRef,就可以确定是属于个人还是群体,也就可以访问更进一步的信息了。姓名以及其他各项信息都可以通过相应属性来操纵。只有ABPerson 类型实体记录才会有属性,而每个记录都具有各种各样的信息。

查询给定记录的信息,可以使用 ABRecordCopyValue 函数。这个函数原型如下:

 CFTypeRef ABRecordCopyValue(ABRecordRef record,kABPersonFirstNameProperty);

调用这个函数时,会将你指定 的属性拷贝一份,并返回引用:

    CFStringRef firstName = ABRecordCopyValue(record, kABPersonFirstNameProperty);

由于kABPersonFirstNameProperty 属性是一个 CFString,你可以将其转换为 NSString* :

NSString* firstName =NSString* ABRecordCopyValue(record, kABPersonFirstNameProperty);

就像CFStringRef 可以转换为 NSString* 一样,如果有属性返回类型是CFDateRef,你也可以转换为 NSDate* :

NSDate* birthday =  (NSDate*) ABRecordCopyValue(record, kABPersonBirthdayProperty);

上面所指定的 ABPropertyID, 是一个与在记录中查找信息相对应的值。根据这个值返回ABPerson 对象属性。由于 ABRecordCopyValue 函数返回的数据类型是通用的 CFTypeRef ,所以结果可疑被转换为一个与属性相对应的更细化的数据类型,如下表:

// Property keys
extern const ABPropertyID kABPersonFirstNameProperty;          // First name - kABStringPropertyType
extern const ABPropertyID kABPersonLastNameProperty;           // Last name - kABStringPropertyType
extern const ABPropertyID kABPersonMiddleNameProperty;         // Middle name - kABStringPropertyType
extern const ABPropertyID kABPersonPrefixProperty;             // Prefix ("Sir" "Duke" "General") - kABStringPropertyType
extern const ABPropertyID kABPersonSuffixProperty;             // Suffix ("Jr." "Sr." "III") - kABStringPropertyType
extern const ABPropertyID kABPersonNicknameProperty;           // Nickname - kABStringPropertyType
extern const ABPropertyID kABPersonFirstNamePhoneticProperty;  // First name Phonetic - kABStringPropertyType
extern const ABPropertyID kABPersonLastNamePhoneticProperty;   // Last name Phonetic - kABStringPropertyType
extern const ABPropertyID kABPersonMiddleNamePhoneticProperty; // Middle name Phonetic - kABStringPropertyType
extern const ABPropertyID kABPersonOrganizationProperty;       // Company name - kABStringPropertyType
extern const ABPropertyID kABPersonJobTitleProperty;           // Job Title - kABStringPropertyType
extern const ABPropertyID kABPersonDepartmentProperty;         // Department name - kABStringPropertyType
extern const ABPropertyID kABPersonEmailProperty;              // Email(s) - kABMultiStringPropertyType
extern const ABPropertyID kABPersonBirthdayProperty;           // Birthday associated with this person - kABDateTimePropertyType
extern const ABPropertyID kABPersonNoteProperty;               // Note - kABStringPropertyType
extern const ABPropertyID kABPersonCreationDateProperty;       // Creation Date (when first saved)
extern const ABPropertyID kABPersonModificationDateProperty;   // Last saved date

五、写入属性

向记录写入属性,使用ABRecordSetValue 函数:

CFStringRef name = CFSTR("IUKEY");
    BOOL suc = ABRecordSetValue(record, kABPersonNicknameProperty, name, &err);
    if (suc) {
        NSLog(@"setValue succeed");
    }

删除属性:

    BOOL succeed = ABRecordRemoveValue(record, kABPersonFirstNameProperty, &err);

当修改完以后不要忘记保存地址簿。

六、多值属性

除了前面列出的属性之外,一个记录还可能会有一些属性,其中包含多个值。多只属性可以用一种索引机制来处理,使用时首先查询值的总数,然后通过特定的索引得到一个条目。指向多值数据的指针,可以首先通过前面提到的 ABRecordCopyValue 方法得到,然后转换成 MultiValueRef :

    ABMultiValueRef phoneNumbers = ABRecordCopyValue(record, kABPersonPhoneProperty);

然后你可以通过这个引用来确定值的个数,并按照索引获取其中的单个值。函数ABMultiGetCount 可以返回条目个数,按照索引拷贝指定条目,可以用ABMultiValueCopyValueAtIndex 函数。

下面列出了多值属性中的条目:

extern const ABPropertyID kABPersonEmailProperty;
extern const ABPropertyID kABPersonAddressProperty;
extern const ABPropertyID kABPersonDateProperty;
extern const ABPropertyID kABPersonPhoneProperty;
extern const ABPropertyID kABPersonInstantMessageProperty;
extern const ABPropertyID kABPersonURLProperty;

除了多值属性中真正的值,每个条目还有一个标签。标签描述了返回的条目的类型。例如,一个电话号码标签有可能指明了这个号码是家庭电话还是手机号。地址的标签则可一描述是家庭地址还是工作地址。要查询特定条目标签,可以使用 ABMultValueCopyLabelAtIndex 函数:

    CFStringRef label = ABMultiValueCopyLabelAtIndex(phoneNumbers, i);

默写属性具有一组预定义的标签。下面这些 CFStringRef 类型标签的原型是在 ABPerson.h 中指定的:

extern const ABPropertyID kABPersonDateProperty;               // Dates associated with this person - kABMultiDatePropertyType
extern const CFStringRef kABPersonAnniversaryLabel;
// Phone numbers
extern const ABPropertyID kABPersonPhoneProperty;              // Generic phone number - kABMultiStringPropertyType
extern const CFStringRef kABPersonPhoneMobileLabel;
extern const CFStringRef kABPersonPhoneIPhoneLabel __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
extern const CFStringRef kABPersonPhoneMainLabel;
extern const CFStringRef kABPersonPhoneHomeFAXLabel;
extern const CFStringRef kABPersonPhoneWorkFAXLabel;
extern const CFStringRef kABPersonPhoneOtherFAXLabel __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0);
extern const CFStringRef kABPersonPhonePagerLabel;
// IM
extern const ABPropertyID kABPersonInstantMessageProperty;     // Instant Messaging - kABMultiDictionaryPropertyType
extern const CFStringRef kABPersonInstantMessageServiceKey;     // Service ("Yahoo", "Jabber", etc.)
extern const CFStringRef kABPersonInstantMessageServiceYahoo;
extern const CFStringRef kABPersonInstantMessageServiceJabber;
extern const CFStringRef kABPersonInstantMessageServiceMSN;
extern const CFStringRef kABPersonInstantMessageServiceICQ;
extern const CFStringRef kABPersonInstantMessageServiceAIM;
// URLs
extern const ABPropertyID kABPersonURLProperty;                // URL - kABMultiStringPropertyType
extern const CFStringRef kABPersonHomePageLabel; // Home Page
// Related names
extern const ABPropertyID kABPersonRelatedNamesProperty;       // Names - kABMultiStringPropertyType
extern const CFStringRef kABPersonFatherLabel;    // Father
extern const CFStringRef kABPersonMotherLabel;    // Mother
extern const CFStringRef kABPersonParentLabel;    // Parent
extern const CFStringRef kABPersonBrotherLabel;   // Brother
extern const CFStringRef kABPersonSisterLabel;    // Sister
extern const CFStringRef kABPersonChildLabel;      // Child
extern const CFStringRef kABPersonFriendLabel;    // Friend
extern const CFStringRef kABPersonSpouseLabel;    // Spouse
extern const CFStringRef kABPersonPartnerLabel;   // Partner
extern const CFStringRef kABPersonAssistantLabel; // Assistant
extern const CFStringRef kABPersonManagerLabel;   // Manager

许多属性使用一组通用标签,标识工作、家庭以及其它地点。这些通用的标签如下:

kABWorkLabel

kABHomeLabel

kABOtherLabel

写入多只属性条目:

为了在现有的属性中加入一个值,你必须首先从记录中复制出多值字典。然后 ABMultiValueAddValueAndLabel 函数操作拷贝,将新的值-标签加入到字典中。最后用函数 ABRecordSetValue 将字典条目写回到地址簿记录中,完全替换掉整个多值属性。

七、使用字典

地址簿记录用字典来 表示地址和即时通讯账号。这些字典是内嵌在多值属性条目之中的。要访问这些字典,需要将值复制出来,并转换成 NSDictionary* 。然后你就可以用一组预定于的键值来访问字典了。

八、图像数据

某些联系人可能会有与之相关联的图像。可以使用 ABPersonCopyImageData 函数获取这些图像数据,返回将是一个 CFDataRef。可以把它转换成 NSData*,然后用来初始化一个UIImage对象。

 if (ABPersonHasImageData(record)) {
        UIImage *addressVookImage = [UIImage imageWithData:(NSData*)ABPersonCopyImageData(record)];
    }

九、地址簿界面

地址簿界面框架提供了两种关键的用户界面:一个“找人”导航控件,来选择联系人;以及一个视图控件,用于显示单个联系人。

1. 联系人视图

ABPersonViewController 提供了一个简单的界面,可以向用户显示一个联系人。联系人视图需要一个 CFRecordRef 。

ABPersonViewController *viewController = [[ABPersonViewController alloc]init];

可以将希望显示的记录赋值给 displayedPerson 属性:

viewController.displayedPerson=record;

然后,你可以创建一个数组,其中包含你想要显示给用户的属性。只有指定的属性才会被显示出来,不过如果联系人被修改了,所有属性都将显示出来。可用的属性值与前面提到的枚举值相同。每个都作为一个 NSNumber 对象加入到数组中。

    NSMutableArray* properties = [[NSMutableArray alloc]init];
    [properties addObject:[NSNumber numberWithInt:kABPersonFirstNameProperty ]];
    [properties addObject:[NSNumber numberWithInt:kABPersonLastNameProperty ]];
    [properties addObject:[NSNumber numberWithInt:kABPersonOrganizationProperty ]];
    viewController.allowsEditing =YES;

十、联系人选取器

如果应用程序要选取一系列联系人,ABPeoplePickerNavigationController 类正好适合你。这个导航控件 可以显示联系人,让用户从中选择其一。选好后,你可以选择向用户显示该联系人,也可以通过一个委托方法实现你自己的行为。

  ABPeoplePickerNavigationController* peoplePicker = [[ABPeoplePickerNavigationController alloc]init];

如果希望允许用户查看单个联系人,你可以赋予其一组希望用户看到的属性。默认情况下会向用户显示所有的项目。 可用的属性值就是本章前面讲授的那些枚举值。每个作为一个NSNumber对象加入到数组中:

 NSMutableArray* properties = [[NSMutableArray alloc]init];
    [properties addObject:[NSNumber numberWithInt:kABPersonFirstNameProperty ]];
    [properties addObject:[NSNumber numberWithInt:kABPersonLastNameProperty ]];
    [properties addObject:[NSNumber numberWithInt:kABPersonOrganizationProperty ]];
    peoplePicker.displayedProperties = properties;

可以指定一个委托,在用户选定联系人时接收通知:

    peoplePicker.peoplePickerDelegate =self;
[self.view addSubview:peoplePicker.view];

委托方发:

-(void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker{
    //取消选择
}

-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person{
    //选中联系人

}
-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier{

    //选中属性
}

原文链接:http://blog.csdn.net/iukey/article/details/7343650

相关文章
  • AddressBook 地址簿  (电话簿) 访问与修改-IOS开发 2012-03-28

    访问地址簿和单个联系人数据的接口是基于C语言的函数,接口传递对地址簿各种对象的引用作为参数.管理地址簿中条目的基类对象是 ABRecord.一个 ABRecord 可以表示一个人 或者一个群体 ABGroup .无论何时,在界面上选中一条记录,或者使用框架进行查询返回一条结果,系统都会返回一个指向 ABRecord 的指针,标示为 ABRecordRef.与地址簿 API 的大部分交互都涉及使用 ABRecordRef 这个引用类型. 常用访问记录的函数如下: ABRecordID ABReco

  • TurboMail独家提供邮件服务器与Outlook间的地址簿同步插件 2013-05-02

    TurboMail邮件服务器有较大的客户群使用Outlook客户端来收发邮件,为了满足Outlook客户端用户群的便利要求,TurboMail提供Outlook连接器,支持邮件系统与Outlook间实时的公共地址簿和个人地址簿同步. TurboMail邮件系统的客户,可以无障碍地在Outlook中使用公共地址簿和个人地址簿.与有些低端邮件系统使用的在Outlook中,通过点击 嵌入的地址簿链接来选择地址的技术不同(只能在主界面打开链接,在回复和转发时则无此功能),TurboMail实现了无论写新

  • Foxmail 7.0中导入地址簿 2013-07-27

    foxmial 7.0中导入地址簿 1.登录foxmail,找到导航栏上的"工具",单击,选择"地址簿": 2.在弹出的页面中选择导出,将本地邮箱的地址簿导出.选择"foxmail地址薄目录" 3.将文件导出,保存在方便找的地方 4.导出内容选择. 5.点击"完成",导出成功. 6.检查导出的表格,如果有错误的,要改正过来.可以添加和删除人员. 7.保存好修改后的地址簿.在foxmail中相同位置选择"导入"

  • 地址簿同步插件 Zindus 2009-02-11

    Zindus 网站 : http://www.zindus.com/ Zindus 是一个Thunderbird邮件客户端的插件,用来跟 Google/Gmail 和 Zimbra 进行地址簿数据同步. 授权协议: 未知 操作系统: 跨平台

  • Web地址簿程序 adx 2009-06-13

    adx 网站 : http://adx.elektronengehirn.net/ adx 是一个基于浏览器的地址簿程序,采用 XML + XSLT 技术开发. 主要特点: 基于Web的联系人管理 联系人标签 根据地理位置进行联系人区分 支持 hCard, XFN 等微格式 体积小(~120 KByte) 轻量级 可便携 (e.g. on USB flash drive) 支持生日提醒 基于 XML 技术开发 通过 XSLT 进行定制 授权协议: 未知 操作系统: 跨平台

  • 地址簿 PHP Address Book 2009-09-26

    PHP Address Book 网站 : http://php-addressbook.sourceforge.net/demo/ PHP Address Book 是一个用 PHP 开发的简单基于Web的地址簿.联系人管理的应用,支持组.地址.电子邮件.电话号码和生日信息:可以导出到 vCard 和 CSV ,集成了 Gmail.Google 和 Yahoo 地图,数据库采用 MySQL . 演示地址: http://php-addressbook.sourceforge.net/demo

  • 地址簿管理 OSX-y 2013-11-27

    OSX-y 网站 : http://sourceforge.net/projects/osxy/ OSX-y Address Book for Windows 是一个地址簿管理程序,风格很像是 OS X 下的应用,但是运行在 Windows 平台,使用简单的 vCard 可与很多 Windows 应用同步,例如 Outlook 和 Miranda. 授权协议: Apache 操作系统: Windows

  • Flickr图片地址可正常访问 2014-03-17

    去年Flickr经历过一场灾难,其图片地址farm1.static.flickr.com和farm2.static.flickr.com被封,导致所有图片均无法访问,现在,据读者反馈,这两个地址现在已经解封,可以正常访问了. 现在,Flickr已经完全访问正常了,旧的图片地址也可以访问了,终于可以不再使用Firefox的Access Flickr了. 一切都托奥运的福,没有奥运的话,不知道Flickr什么时候才能恢复正常呢. 来自:http://www.williamlong.info/arch

  • IOS开发和设计模式简化 2014-07-23

    下面是一个几乎很全面的的设计清单 抽象工厂模式 适配器模式 对象建模模式 责任链模式 命令模式 复合模式 装饰器模式 门面模式 迭代器模式 中介模式 备忘录模式 模型-视图-控制器模式 观察者模式 代理模式 接待员模式 singleton模式 模板方法模式 设计模式分为三类:创造性.结构和行为. 创造性模式是专门用于处理对象的创建. 抽象工厂模式和单例被认为是创造性. 结构模式用于定义对象结构. 适配器,复合,装饰,和代理模式类型的结构设计模式. 行为模式识别对象之间的通信. 责任链,命令,迭代

  • iOS开发工具--网络封包分析工具Charles 2015-04-30

    简介 Charles是在Mac下常用的截取网络封包的工具,在做iOS开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析. Charles是收费软件,可以免费试用30天.试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过30分钟,并且启动时将会有10秒种的延时. 因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的

  • 那些好用的iOS开发工具 2014-04-22

    前言 从苹果发明iPhone起,AppStore上的一个又一个类似flappy bird的一夜暴富的故事刺激着大量开发者加入移动开发大军.随着这些开发者出现的,还有大量方便iOS开发者的各种工具.这些工具作为整个应用开发生态链的重要一环,极大地方便了广大应用开发者,节省了应用开发的时间. 本文将从应用工具.命令行工具.插件工具3个方面,介绍这些优秀的应用. 图形应用工具 Charles Charles(http://www.charlesproxy.com)是在Mac下常用的截取网络封包的工具,

  • iOS开发建议和技巧:第一部分 2015-02-14

    我是个热衷于iOS平台的开发者,最早开发iOS app是在2009年中,当时打算做一个关于荷兰Lowlands音乐节的应用,虽然最后没有完成,但是我学会了如何开发一款iOS App.从那开始,我想了许多值得做成应用的点子,有些还用博客记录下来.到了2010年,我做了一款供朋友间交流使用的论坛应用,我给它取名为'Yert'.之后的2011年,我利用空闲时间和我的叔叔(Jos Jong)还有兄弟(Jim van Zummeren)一起合作开发了一款叫做EasyCalendar的应用, 这个应用给我们

  • iOS开发初学者记录 2015-03-31

    做完了项目,想总结下,不知怎么写合适,只列出一些iOS开发的基础点,开发前因为不知道这些点,导致走了一些弯路,希望对初学者有帮助. 基础篇 为什么对一个变量release后还要设为nil 对一个变量release后,这个变量指向的内存释放了,但这个变量本身没变,仍指向原来的内存地址.若这个变量在释放后被访问,或者被重复release,就会导致应用崩溃.设为nil后这个变量指向0×00,可以保证程序以后访问不到原先的内存地址,对nil进行release也没任何问题. 使用类成员时,前面加不加sel

  • UIButton 按钮控件-IOS开发 2012-03-28

    声明 欢迎转载,但是请尊重作者劳动成果,转载请保留此框内声明,谢谢. 文章出处:http://blog.csdn.net/iukey UIButton是一个标准的UIControl控件,所以如果你对UIControl不甚了解还是先看一下我的另一篇博文:<UIControl IOS控件编程> 一.创建 两种方法: 1. 常规的 initWithFrame UIButton *btn1 = [[UIButton alloc]initWithFrame:CGRectMake(10, 10, 80,

  • [原创]iOS开发入门教程 2013-05-24

    程序发轻狂,代码阑珊,苹果开发安卓狂!--写给狂热的编程爱好者们 写在前面的话 学习iOS应用程序开发已有一段时间,最近稍微闲下来了,正好也想记录一下前阶段的整个学习过程.索性就从最基础的开始,一步一步记录一个最简单的iOS应用从创建到运行的全过程,其中会穿插很多相关知识或是遇到过的问题.其实算不上教程,但希望能够帮助更多的开发爱好者更快.更好的入门. iOS开发环境简述 最友好,最现实,也是最方便的开发环境就是在Mac系统中安装Xcode进行开发.原因在于:第一,开发工具(Xcode)限制.苹

  • iOS开发的技巧,新的一篇,持续更新...(系列二) 2014-04-03

    上一篇:iOS开发的一些小技巧,持续更新....(系列一) 20140331 1.说一说通知NSNotification和NSNotificationCenter 在iOS应用开发中有一个Notification Center的概念,它是一个单利对象,允许当某个事件发生时候通知一些对象.它允许我们在地程度耦合的情况下,满足控制器与一个任意的对象进行通信的目的.这种模式的基本特征是为了让其他的对象能够收到在该controller中发生某种事件而产生的消息,controller使用一个key.这样对

  • iOS开发系列--通知与消息机制 2015-03-19

    概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会补充通知中心的内容避免初学者对两种概念的混淆. 本文包括下面内容

  • iOS开发之路--微博OAuth授权_取得用户授权的accessToken 2013-12-11

    本文是IOS开发之路系列文章的第二篇,讲诉的内容是如何使用微博OAuth授权,并付源码,然后详细讲解了取得用户授权的accessToken,希望对大家有所帮助 最终效果图: OauthViewController.m // // OauthViewController.m // 20_帅哥no微博 // // Created by beyond on 14-8-5. // Copyright (c) 2014年 com.beyond. All rights reserved. // 授权控制器,

  • IOS开发环境windows化攻略 2014-10-08

    本人主要介绍了IOS开发环境windows化攻略,需要的朋友可以参考下 1. XCode Perference General Double Click Navigation - 默认双击后会弹出新窗口(Use Seperate Window),这个和vc不一样,主要这个窗口位置和大小通常让人有不连贯感.改为Same as Click就和vc一样 Text Editing Editing While editing Automatically trim trailing whitespace (

  • IOS开发教程之put上传文件的服务器的配置及实例分享 2014-12-29

    IOS开发给人一种高大上的赶脚,弄的好像你不会IOS就不是个合格的程序员一样,好吧,既然是大趋势,那我们就来学习下吧,今天来看看put上传文件的服务器配置及案例 1,HTTP常见的方法 GET 获取指定资源 POST 2M 向指定资源提交数据进行处理请求,在RESTful风格中用于新增资源 HEAD 获取指定资源头部信息 PUT 替换指定资源(不支持浏览器操作) DELETE 删除指定资源 2,配置服务器的put请求方式: 1> n 打开终端 p cd /etc/apache2 p sudo v