版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1338191
字符串——NSString
学习字符串首先要懂得字符串的创建,创建方式也有好几种方式,NSString * str = @"qwe";
NSString * str2 = [NSString alloc initWithString : str];
NSString * str3 = [NSString alloc initWithUTF8String:"hello world"];
NSString * str4 = [NSString alloc initWithFormat:@"hello %@", @"world"];
字符串创建好之后就要学着使用字符串,这就需要用到适用于字符串的函数。函数很多,需要在今后的使用中慢慢积累,逐渐记忆。下面举几个例子:
函数还有很多,这些方法只是举例,起一个抛砖引玉的作用。
NSString是不可变字符串,所谓不可变就是字符串的长度内容是不可以改变的,不能增长、不能缩短、不能换字符。。。
字符串中除了不可变字符串还有可变字符串即NSMutableString.可变字符串的内容、长度就可以被我们任意更改了。
下面同样举一些函数,注意如果是不可变字符串这些函数是不可以用的。(就像人,同样是人,可是只有女人才可以生育,男人是不可以的。 例子不是很恰当)。
2.insertString:@"www" atIndex:4:在某个位置上插入字符串。
字符串之后学习的是数组——NSArray
数组的学习思路和字符串是相似的,先要创建,创建之后就是函数的使用。数组的元素可以是任何对象,但数组中装有的元素不是对象而是地址。打印数组就是打印数组的每个元素,实际就是description方法的返回值。我们都对description方法进行了重写。在数组中有一个新鲜的知识点,那就是遍历,对数组进行遍历。遍历方式常用的有三种,即1.枚举器法 2.快速枚举法 3.使用I值遍历。三种遍历方式中属快速枚举法简单。下面就介绍三种遍历方式:
创建枚举器:NSEnumerator * enumerator =[array objectEnumerator];
id obj;// 地址 id是一个指针
while(obj = enumerator nextObject) {
NSLog(@"%@", obj);
}
for(id obj in array) {
NSLog("%@", obj);
}
NSUInteger length = array count;
NSInteger i;
for(i = 0; i < length; i ++) {
NSLog(@"%@", array objectAtIndex:i);
}
与字符串一样,数组也分可变数组和不可变数组,不可变数组即NSMutableArray。数组中的方法就不再举例了,网上的常用方法到处都是。
最后总结一些字典。
看到字典相等一般人回首先想到我们平时生活、学习中用到的字典有汉语字典有英语字典。字典是我们用来查生词的工具,大多数用过字典的人都会用它查找到我们需要的生词。字典在前面给出了后面每个生词对应的页数,让我们查起来十分方便。OC中的字典——NSDictionary作用也差不多,字典中的元素是以键值对的形势存在的,键值对就像字典中的生词和页数的关系,有着一定的对应关系。OC中的字典存储对象的地址是没有顺序的。字典同样可以像数组那样进行遍历,遍历方式也差不多。快速枚举法所遍历的是键,得到了键也就知道了值。老师说的一句话:值是我们的目的(我们要得到值),键是我们的手段(我们通过键寻找值)。
字典中同样有可变字典——NSMutableDictionary。
在字典中的很多题听不错,下面就把一个手机通讯录的题贴在下面,看懂了这道题,很多东西也就会了。
首先建立一个Person类:(要纪录人的姓名和电话号码)
//
// Person.m
// 手机通讯录
//
// Created by student on 15-7-12.
// Copyright (c) 2015年 student. All rights reserved.
//
#import "Person.h"
@implementation Person
// set方法
-(void) setName:(NSString *) name{
_name = name;
}
-(void) setPhoneNum:(NSString *) phoneNum{
_phoneNum = phoneNum;
}
// get方法
-(NSString *) name{
return _name;
}
-(NSString *) phoneNum{
return_phoneNum;
}
// 构造方法
-(Person *) initWithName:(NSString *)name withPhoneNum:(NSString *) phoneNum{
if (self = superinit) {
_name = name;
_phoneNum = phoneNum;
}
return self;
}
// 显示信息
-(void) showInfors{
NSLog(@"姓名:%@ 手机号:%@", _name,_phoneNum);
}
@end
其次再建立一个Manager类对Person进行管理,即对通讯录进行操作(如:增、删、改、查)。
//
// Manager.m
// 手机通讯录
//
// Created by student on 15-7-12.
// Copyright (c) 2015年 student. All rights reserved.
//
#import "Manager.h"
#import "Person.h"
@implementation Manager
// 构造方法
-(Manager *) init{
if (self = superinit) {
_dataArr = [NSMutableArrayalloc init];
_dataDict = [NSMutableDictionaryalloc init];
}
return self;
}
// 添加联系人
-(void) addPersonWithName:(NSString *) name withPhoneNum:(NSString *) phoneNum{
Person * person = [Personalloc initWithName:namewithPhoneNum:phoneNum];
_dataDict setObject:personforKey:name; // name是键
_dataArr addObject:person;
}
// 删除联系人
-(void) detePersonWithName:(NSString *) name{
Person * person = _dataDictobjectForKey:name;
_dataArr removeObject:person;
_dataDictremoveObjectForKey:name;
}
// 修改联系人电话
-(void) modifyPhoneNumByName:(NSString *) name withNewPhoneNum:(NSString *) phoneNum{
Person * person = _dataDictobjectForKey:name;
person setPhoneNum:phoneNum; // person中的set方法
}
// 查找联系人
-(void) searchPersonWithName:(NSString *) name{
Person * person = _dataDict objectForKey:name;
if (person) {
person showInfors;
} else {
NSLog(@"There is no this one! :%@", name);
}
}
// 排序(按姓名)
-(void) sortPersonByName{
for (NSUInteger i =0; i < _dataArrcount - 1; i ++) {
for (NSUInteger j = i +1; j < _dataArrcount; j ++) {
Person * person1 = _dataArrobjectAtIndex:i ;
Person * person2 = _dataArrobjectAtIndex:j;
if ([person1 name compare:person2 name] == NSOrderedDescending) {
_dataArrexchangeObjectAtIndex:i withObjectAtIndex:j;
}
}
}
}
// 显示信息
-(void) showAllInfors{
for (Person * personin _dataArr) {
person showInfors;
}
}
@end
最后写主函数:
//
// main.m
// 手机通讯录
//
// Created by student on 15-7-12.
// Copyright (c) 2015年 student. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Manager.h"
int main(int argc,const char * argv[])
{
@autoreleasepool {
// 创建manager对象
Manager * manager = [Manageralloc init];
// 添加联系人信息
manager addPersonWithName:@"peng fei"withPhoneNum:@"123456";
manager addPersonWithName:@"meng zhen"withPhoneNum:@"23456";
manager addPersonWithName:@"yu yang"withPhoneNum:@"12378";
manager addPersonWithName:@"liang sen"withPhoneNum:@"23456789";
// 显示信息
manager showAllInfors;
// 删除联系人
manager detePersonWithName:@"meng zhen";
NSLog(@"删除后");
manager showAllInfors;
// 修改联系人电话
manager modifyPhoneNumByName:@"peng fei"withNewPhoneNum:@"345678";
NSLog(@"修改后");
manager showAllInfors;
// 查找联系人
NSLog(@" 查找到的信息:");
manager searchPersonWithName:@"peng fei";
manager searchPersonWithName:@"pen fei";
// 排序(按姓名)
manager sortPersonByName;
NSLog(@"排序后");
manager showAllInfors;
}
return 0;
}
上面的代码给的都是实现部分,声明部分没给,可以根据实现部分轻松得到声明部分。
字符串、字典、数组的总结就到这里,今后可千万别再误课了,感觉补课好累,而且补完了心里也没底,感觉没听老师讲课很多东西都误了。下个礼拜加倍努力地去学习,加油!!!