Foundation kit
基本数据
结
构入
门
Cocoa
有两个不同的框架组成:Foundation kit
和Application kit
。Application kit
包含了所有的用户接口对象和高级类。Foundation kit
中有很多有用的,面向数据的低级类和数据类型,如Nsstring
、NsArray
、NsEnumerator
、NsNumber
等。本章主要介绍Foundation kit
的一些基本数据结构。
一、常用的
结
构体
1.NSRange
:
typedef
struct_NSRange
{
unsigned int location;
unsigned int length;
}
NSRange
可以使用3
中方式赋值:
<1>
直接赋值
NSRange
range;
range.location
= 1;
range.length
= 10;
<2>
使用c
语言聚合结构赋值机制
NSRange
range = {1, 10};
<3>
使用Cocoa
提供的函数:NSMakeRange();
NSRange
range
= NSMakeRange(17, 4);
2.NSPoint
和
NSSize:
typedef struct NSPoint {
float
x;
float
y;
}NSPoint;
typedef struct NSSize {
float
width;
float
height;
}NSSize;
Cocoa
提供了一个
矩形的结构体:
typedef struct _NSRect {
NSPoint
origin;
NSSize
size;
} NSRect;
如同NSRange
,Cocoa
为我们提供了创建这些结构体的函数:NSMakePoint(),NSMakeSize(),NSMakeRect()
。
Cocoa
使用结构体定义这些类型,而不是用对象,主要是出于性能上的考虑。
二、字符串
NSString
创
建方式可以采用如下方式
:
NSString
*height;
height = [NSString
stringWithFormat:@"%@",@"fs"];
NSLog(@"height:%@", height);
其中
stringWithFormat
方法定
义
如下:
+ (id)stringWithFormat:(NSString *)
format,
...
前面的
+
表示
该
方法
为类
方法,并非
实例方法。而创建对象的类方法称为工厂方法。
NSString
的长度可以通过length
方法得到,
如下所示:
long l = [height length];
NSLog(@"%li",l);
NSString
的比较类似与java
,如果通过==
比较,是进行指针的比较,如果相比较值是否相同使用
isEqualToString
;
但是需要注意,采用stringwithString
方式初始化,与采用直接赋值的方式初始化,指针指向的是相同对象:
NSString *s1 = [NSString stringWithString:@"32k"];
NSString *s2 =
[NSString stringWithString:@"32k"];
NSString *s3 =
[NSString stringWithFormat:@"%dk", 32];
NSString *s4 =
@"32k";
NSString *s5 =
[NSString stringWithFormat:@"%@", @"32k"];
if ([s1
isEqualToString:s2]) {
NSLog(@"s1 isEqualToString:s2");
}
if (s1 == s2) {
NSLog(@"s1 == s2");
}
if (s3 == s1) {
NSLog(@"s3 == s1");
}
if (s1 == s4) {
NSLog(@"s1 == s4");
}
if (s1 == s5) {
NSLog(@"s1 == s5");
}
其打印结果为:
2011-10-26 23:12:26.955 NSStringTest[561:707] s1
isEqualToString:s2
2011-10-26 23:12:26.956 NSStringTest[561:707] s1
== s2
2011-10-26 23:12:26.956 NSStringTest[561:707] s1
== s4
Program
ended with exit code: 0
字符串间的比较也可以通过compare
函数进行:
if ([@"adb" compare:@"ssd"] ==
NSOrderedSame) {
NSLog(@"NSOrderedSame");
}
else if
([@"adb" compare:@"ssd"] == NSOrderedAscending) {
NSLog(@"NSOrderedAscending");
}
else if
([@"adb" compare:@"ssd"] == NSOrderedDescending) {
NSLog(@"NSOrderedDescending");
}
if
([@"Ssd" compare:@"ssd" options:NSCaseInsensitiveSearch] ==
NSOrderedSame) {
NSLog(@"NSOrderedSame");
}
else if
([@"Ssd" compare:@"ssd" options:NSCaseInsensitiveSearch] ==
NSOrderedAscending) {
NSLog(@"NSOrderedAscending");
}
else if
([@"Ssd" compare:@"ssd" options:NSCaseInsensitiveSearch] ==
NSOrderedDescending) {
NSLog(@"NSOrderedDescending");
}
其中
NSOrderedDescending
是枚举定义的。 Option
为是否添加比较的参数。即是否需要不区分大小写,或者是否是数字比较等。。。
可以通过如下方式判断是否包含子串:
if ([@"sscd"
hasPrefix:@"ssc"]) {
NSLog(@"hasPrefix");
}
if ([@"sscd"
hasSuffix:@"scd"]) {
NSLog(@"hasSuffix");
}
NSRange range = [@"abcdef"
rangeOfString:@"cde"];
NSLog(@"%ul %ul",
range.location, range.length);
创建变长字符串:
NSMutableString
可以使用stringWithCapacity
来创建一个实例。其原理类似与stringBuffer
。不多赘述
NSMutableString
*mutableString = [NSMutableString stringWithCapacity:30];
[mutableString appendFormat:@"f%@",@"fsd"];
NSLog(@"%@", mutableString);
NSRange r = [@"ffsd" rangeOfString:@"fs"];
[mutableString deleteCharactersInRange:r];
NSLog(@"%@", mutableString);
首先:
stringWithCapacity:30
中的
30
只是一个参考,并不最
终
决定字符串的
长
度。其余方法可以参考代
码
;
分享到:
相关推荐
Foundation Kit提供了大量的类,涵盖了基本的数据处理功能,如`NSString`、`NSArray`、`NSEnumerator`和`NSNumber`等;而Application Kit则包含了所有的用户界面组件和高级类。 #### 五、Objective-C的独特之处 ...
- **Foundation框架**:包含了许多面向数据的低级类和数据结构,如`NSString`、`NSArray`、`NSDictionary`等,是所有Cocoa应用的基础。 - **Application Kit (AppKit)**:包含所有用户界面对象和高级类,例如`...
例如,Foundation框架提供了基本的数据类型和数据结构,UIKit框架则包含构建用户界面所需的组件。书中会详细讲解这些框架的使用,包括视图控制器的生命周期、事件处理、动画效果以及如何使用Core Data进行数据持久化...
- 设计数据模型,规划数据结构。 - 确定数据存储方案,如SQLite、Core Data等。 - **模型实现**: - 实现数据模型,编写相关代码。 - 包括数据的增删改查等操作。 - **使用设计模式**: - MVC (Model-View-...
Foundation是iOS开发的基础,它提供了一系列核心的Objective-C类,涵盖了诸如字符串、数字、数组、字典等基本数据类型。此外,Foundation还包括了对内存管理、文件系统操作、日期和时间处理、对象序列化(归档)以及...
Foundation框架则提供了基本的数据结构和系统服务。熟悉这些框架并了解如何在项目中导入和使用它们是关键。 4. **Storyboard与Interface Builder**: Storyboard是Xcode中的一个可视化设计工具,允许开发者通过拖放...
- **Foundation**:提供了一系列基础类和服务,如数据结构、网络通信等。 - **Core Data**:一种对象关系映射(ORM)解决方案,用于管理和持久化应用的数据模型。 - **Core Animation**:支持创建复杂的动画效果,...
- **模型设计(Model Design)**:定义数据结构和存储方式。 - **模型实现(Model Implementation)**:使用Swift或Objective-C实现数据模型。 - **使用设计模式**:如MVC、目标-动作(Target-Action)、委托(Delegate)等...
#### 一、入门与准备 **标题:“Start Developing iOS Apps Today”** **描述:“为iOS应用的新手开发者提供指南”** 本章节主要介绍了开发iOS应用的基本步骤,从环境搭建到项目的创建,再到基础功能的实现。 **...
第二部分是“Xcode 5中的新特性”,深入介绍了Xcode 5的新功能,如Objective-C和Foundation框架的更新,以及Xcode 5中的单元测试、源代码控制和持续集成的新方法。这对于希望掌握最新开发环境工具的开发者是必不可少...