`
158067568
  • 浏览: 329552 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

objective-c Foundation kit 基本数据结构入门

 
阅读更多

 

Foundation kit  基本数据 构入

 

Cocoa 有两个不同的框架组成:Foundation kitApplication kitApplication kit 包含了所有的用户接口对象和高级类。Foundation kit 中有很多有用的,面向数据的低级类和数据类型,如NsstringNsArrayNsEnumeratorNsNumber 等。本章主要介绍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;

如同NSRangeCocoa 为我们提供了创建这些结构体的函数: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 只是一个参考,并不最 决定字符串的 度。其余方法可以参考代       

0
0
分享到:
评论

相关推荐

    Objective-C语法深入浅出-适合作为学习IOS开发的入门材料

    Foundation Kit提供了大量的类,涵盖了基本的数据处理功能,如`NSString`、`NSArray`、`NSEnumerator`和`NSNumber`等;而Application Kit则包含了所有的用户界面组件和高级类。 #### 五、Objective-C的独特之处 ...

    object-c基础入门

    - **Foundation框架**:包含了许多面向数据的低级类和数据结构,如`NSString`、`NSArray`、`NSDictionary`等,是所有Cocoa应用的基础。 - **Application Kit (AppKit)**:包含所有用户界面对象和高级类,例如`...

    Beginning iOS 6 Development Exploring the iOS SDK

    例如,Foundation框架提供了基本的数据类型和数据结构,UIKit框架则包含构建用户界面所需的组件。书中会详细讲解这些框架的使用,包括视图控制器的生命周期、事件处理、动画效果以及如何使用Core Data进行数据持久化...

    iphone创意开发入门与实践

    Media层则专注于多媒体技术,如2D和3D图形、音频和视频处理,包含了OpenGL ES、Quartz、Core Audio等C语言库,以及Core Animation,这是一个高级的Objective-C动画引擎。Objective-C作为C的扩展,提供了面向对象编程...

    ios应用教程入门

    - 设计数据模型,规划数据结构。 - 确定数据存储方案,如SQLite、Core Data等。 - **模型实现**: - 实现数据模型,编写相关代码。 - 包括数据的增删改查等操作。 - **使用设计模式**: - MVC (Model-View-...

    iOS开发入门1.docx

    Foundation是iOS开发的基础,它提供了一系列核心的Objective-C类,涵盖了诸如字符串、数字、数组、字典等基本数据类型。此外,Foundation还包括了对内存管理、文件系统操作、日期和时间处理、对象序列化(归档)以及...

    iphone开发基础教程源码

    Foundation框架则提供了基本的数据结构和系统服务。熟悉这些框架并了解如何在项目中导入和使用它们是关键。 4. **Storyboard与Interface Builder**: Storyboard是Xcode中的一个可视化设计工具,允许开发者通过拖放...

    Beginning iPhone Development:Exploring the iPhone SDK

    - **Foundation**:提供了一系列基础类和服务,如数据结构、网络通信等。 - **Core Data**:一种对象关系映射(ORM)解决方案,用于管理和持久化应用的数据模型。 - **Core Animation**:支持创建复杂的动画效果,...

    马上着手开发 iOS 应用程序 Start Developing iOS Apps Today

    - **模型设计(Model Design)**:定义数据结构和存储方式。 - **模型实现(Model Implementation)**:使用Swift或Objective-C实现数据模型。 - **使用设计模式**:如MVC、目标-动作(Target-Action)、委托(Delegate)等...

    Start Developing iOS Apps Today

    #### 一、入门与准备 **标题:“Start Developing iOS Apps Today”** **描述:“为iOS应用的新手开发者提供指南”** 本章节主要介绍了开发iOS应用的基本步骤,从环境搭建到项目的创建,再到基础功能的实现。 **...

    iOS 7 by Tutorials 瘦身版 pdf

    第二部分是“Xcode 5中的新特性”,深入介绍了Xcode 5的新功能,如Objective-C和Foundation框架的更新,以及Xcode 5中的单元测试、源代码控制和持续集成的新方法。这对于希望掌握最新开发环境工具的开发者是必不可少...

Global site tag (gtag.js) - Google Analytics