Tag Archives: 开发

Cocoa 入门8

字典– NSDictionary
是使用键值配对(条目)来储存和获取对象的,就像1 对应 A ,2 对应 B等等。
例子:
NSArray *keys = [@"one two three four" componentsSeparatedByString: @" "];
NSArray *values = [@"diy how-to hobby geek" componentsSeperatedByString: @" "];
//建立两个NSArray 数组,并按照字符串之间的空格进行分割储存
NSDictionary *dict = [[NSDictionary alloc] initWithObjects: values forKeys: keys];
printf (“%s\n”, [[dict description] UTF8String]);
//用keys 和 values创建一个新的字典,并输出
结果如下:
one = diy;
four = geek;
three = hobby;
two = how-to;
——————————————————————
可变字典 — NSMutableDictionary 同 NSMutableString、NSMutableArray 类似:
- setObject:   [...]

Cocoa 入门7

NSArray    数组啊~ 数组
数组和字符串一样也分为 不可变数组(NSArray) 和 可变数组(NSMutableArray).
- count  //返回数目
-  objectAtIndex: //返回引索位置的值
-  containsObject: //判断对象是否存在  返回值 YES 或 NO
关于NSArray的例子:
NSString *string = @”kukufun is the Biggest How To and DIY community in china”;
NSArray *array = [string componentsSeparatedByString: @" "];
// 以上是建立一个字符串,并按照空格把字符串的值分别存放在数组中
int count = [array count];
int i;
for ( i = 0 ; i < count; i++)
{
printf(“%i: %s\n”, i , [[array objectAtIndex:i] UTF8String]);
}
// [...]

Cocoa 入门5

字符串(下)[1]:
抽取子串
在字符串中抽取子串有三个method:
- substringToIndex: [从头部截取]
- substringWithRange: [从中间截取]
- substringFromIndex: [结尾截取]
用法头尾相似:
[aString substringToIndex: 7];
[aString substringFromIndex: 17];
中间的稍有不同,需要用NSMakeRange(起始位置,截取长度)来进行截取定位,所以可以任意位置截取:
[aString substringWithRange: NSMakeRange(15, 5)];
———————–酷库房的分割线———————————
字符串中处理文件路径:
用- stringByExpandingTildeInPath: 这个method来处理地址出现的”~”(用户主目录缩写)。 比如:
NSString *aString = @”~/kukufun.txt”;
NSString *otherString = [aString stringByExpandingTildePath];
现在地址数组 otherString 变成了 /Users/realjons/kukufun.txt了。  相反的我们可以用- stringByAbbreviatingWithTildeInPath 来把/Users/realjons/kukufun.txt变回~/kukufun.txt。
我们也可以对文件扩展名进行操作这里又出现了两个截然相反的method : – pathExtension 和 – stringByAppendingPathExtension 它们的用途我们可以通过两个例子来清楚地了解:
NSString *path = @”~/kukufun.txt”;
NSString *newPath = [path pathExtension]; // newPath 字符串里的内容是txt, 可以用它来获取文件扩展名。
注: 如果newPath为空时,请检查文件是否以XXX.xx这样的格式 , 或者文件是否存在。
NSString *path = @”~/kukufun”;
NSString *newPath [...]

Cocoa 入门4

字符串(中):
比较两个字符串是否相等时一定要注意。  看个C用strcmp(string1,string2)的例子:
char string1[] = “www.kukufun.com”;
char string2[] = “www.kukufun.com”;
if (strcmp(string1, string2) == 0) {
//something here
}
条件表达式会是真。
那么我们来看一下这段代码:
NSString *string1 = @”www.kukufun.com”;
NSString *string2 = @”www.kukufun.com”;
//这里我们创建了两个不同的对象,但他们都有相同的值。
BOOL result = string1 == string2 ;
//这里我们对两个对象进行比较。
返回的结果是不等(BOOL值返回false),这是因为变量string1,string2并不是真正包含一个字符串的对象,而是指向内存中字符串对象的指针,实际是一个内存位置的地址。  考虑一下上边比较的情况,它们的内存位置是不同的,所以并不相等。
我们可以用- isEqualToString: 这个Method来进行比较:
NSString *string1 = @”www.kukufun.com”;
NSString *string2 = @”www.kukufun.com”;
//这里我们创建了两个不同的对象,但他们都有相同的值。
BOOL result = [string1 isEqualToString: string2];
//用- isEqualToString: Method来进行比较。
返回的值应该是”true”,我们其实可以直接来用- caseInsensitiveCompare: 来解决值的比较而不用考虑大小写的问题:
BOOL result = [string1 caseInsensitiveCompare: string2] == NSOrderSame;
结果将为真。
在串中搜索子串:
找出字符串子串中的位置,可以用- rangeOfString: 这个Method —–
NSString *aString [...]