创建: 2018/02/02

完成字符串: 2018/02/05

任务表: TODO

最新内容确认: 字符串,数据类, 数组类

 可变与不变的对象
 一览
 种类  不变类  可变类
 数组  NSArray  NSMutableArray
 数据data  NSData  NSMutableData
 字典(哈希表)  NSDictionary  NSMutableDictionary
 集合  NSSet  NSMutableSet
 字符串  NSString  NSMutableString
 带属性的字符串  NSAttributedString  NSMutableAttributedString
 文字集合  NSCharacterSet  NSMutableCharacterSet
 索引集合  NSIndexSet  NSMutableIndexSet

可变类是不变类的子类,继承可变类的所有方法

 从不变类生成可变类

- (id) mutableCopy;

定义于NSObject

Sample *test = [[Sample alloc] init];
MutableSample *temp = [test mutableCopy];
   
 字符串类
 简介

 字符码: Unicode 

NSString 生成了无法更改

Foundation/NSString.h

 NSString主要方法

(1)

Unicode字符串的操作

注: unichar是Unicode表现的一个字符的类型,不同于char

便利构造函数: 先自动呼出alloc的

- (id) initWithUTF8String: (const char*) bytes;

便利构造函数:

+ (id) stringWithUTF8String: (const char*) bytes;

 用和C一样以'\0'结尾的字符串生成
 - (__strong const char *) UTF8String;  返回编码为UTF-8的C字符串指针
 - (NSUInteger) length;

返回字符串长度

不同于C,不能用来计算需要的大小

(# TODO: check [?])

 - (unichar) characterAtIndex: (NSUInteger) index;  获取第index个的Unicode字符

- (id) initWithCharacters: (const unichar *) characters length: (NSUInteger) length

便利构造函数:

+ (id) stringWithCharacters: length:

 生成length长的以characters重复的字符串
 - (void) getCharacters: (unichar *) buffer range: (NSRange) aRange

把aRange指定的范围的字符串复制到buffer

注: 不会自动加'\0'

NSRange 开始位置和长度的结构体

buffer长度必须够

   

(2)

指定字符编码的变换

 NSStringEncoding类型

指定字符码

如

NSASCIIStringEncoding

 7位的ASCII字码

NSUTF8StringEncoding

Unicode字符的8位字码

UTF-8

NSMaxOsRomanStringEncoding

 日语的8位EUC字码
 NSShiftJISStringEncoding  日语的8位shiftJIS字码
   

- (id) initWithCString: (const char *) nullTerminatedCString

encoding: (NSStringEncoding) encoding

便利构造函数:

+ (id) stringWithCString: encoding:

注: encoding表示data的生成方法,生成的对象的生成方法是Unicode

通过指定编码的以'\0'结尾的字符串生成

 - (__strong const char *) cStringUsingEncoding: (NSStringEncoding) encoding

指定字码来转换,无法转换会抛出例外

getCString:MaxLength:encoding: 可以直接放到准备好的内存里

- (id) initWithData: (NSData *) data encoding: (NSStringEncoding) encoding

注: encoding表示data的生成方法,生成的对象的生成方法是Unicode

通过以encoding字码写的data来生成

类似的有

initWithBytes:length:encoding:

- (NSData *) dataUsingEncoding: (NSStringEncoding) encoding

只获取长度:

lengthOfBytesUsingEncoding:

把受体的字符串通过encoding编码后返回NSData,

无法转换返回nil

 - (BOOL) canBeConvertedToEncoding: (NSStringEncoding) encoding

能不能被指定的字码转换

可以用

availableStringEncodings来查看当前环境可用的encoding

URL字符化

- (NSString *) stringByAddingPercentEscapesUsingEncoding: (NSStringEncoding) encoding

String化

stringByReplacingPercentEscapesUsingEncoding:

把受体根据encoding来%化,用在URL的字符串表达上

都在Foundation/NSURL.h

   

(3)

根据格式生成字符串

 格式规则

格式规则和printf()里的一样

不同:

可用%@, NSString, 对象的description(NSString)

格式字符串也是NSString

注意: 用格式生成NSString时,格式修饰符的对象不会自动转型

- (id) initWithFormat: (NSString *) format, ...

便利构造函数:

stringWithFormat:

根据格式生成字符串

可变长度的参数, 最后加...

# TODO: Supply [10.2 可变长度的参数]

   

(4)

对比

 NSComparisionResult

enum _NSComparisionResult {
NSOrderedAscending = -, NSOrderedSame, NSOrderedDescending
}; typedef NSInteger NSComparisionResult;

相同返回NSOrderedSame, 小返回NSOrderedDescending, 大返回NSOrderedAscending

 - (NSComparisionResult) compare: (NSString *) aString 

字符串的比较, aString不能为nil

只是比较是否相同的话可用

- (BOOL) isEqualToString: (NSString *) aString

 - (NSComparisionResult) caseInsensitiveCompare: (NSString *) aString

无视大小写的比较

其他方法来比较的话用:compare:option:

 - (NSComparisionResult) localizedStandardCompare: (NSString *) aString  Mac的Finder里文件名排序相同的方法来比较
 - (BOOL) isEqualToString: (NSString *) aString  与指定NSString是否相同

- (BOOL) hasPrefix: (NSString *) aString

 开头是否和aString相同(是否有指定前缀)
 - (BOOL) hasSuffix: (NSString *) aString  结尾是否与aString相同
 commonPrefixWithString:options:  从开头取出相同的字符串
   
   

(5)

连接

 - (NSString *) stringByAppendingString: (NSString *) astring  把aString连接在最后
 - (NSString *) stringByAppendingFormat: (NSString *) format, ...  把根据格式生成的字符串连接在最后
   
   

(6)

子字符串

【WIP】Objective-C Foundation框架的主要对象的更多相关文章

  1. Objective - c Foundation 框架详解2

    Objective - c  Foundation 框架详解2 Collection Agency Cocoa provides a number of collection classes such ...

  2. 【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词

    一. 字符串 API 1. NSString 用法简介 (1) NSString API 介绍 NSString 功能 : -- 创建字符串 : 使用 init 开头的实例方法, 也可以使用 Stri ...

  3. Foundation框架—时间处理对象NSDate

    NSDate类用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差(Time Interval)运算和日期之间的早晚比较等. 1. NSDate的构造方法和构造获取实例的属性 用于创建NSDat ...

  4. (译)Getting Started——1.3.3 Working with Foundation(使用Foundation框架)

    在你使用Objective-C语言开发应用时,你会发现在开发中,你会用到很多框架.尤其是Foundation框架,该框架为应用提供了最基础的服务.Foundation框架包括了代表着基本数据类型的va ...

  5. 从今天開始学习iOS开发(iOS 7版)--实现一款App之Foundation框架的使用

    iOSFoundation框架 当你着手为你的应用编写代码的时候,你会发现有很多可供使用的Objective-C的框架类,当中尤其重要的就是基础框架类.它为平台全部的应用提供基础服务.基础框架类中包括 ...

  6. (转载)OC学习篇之---Foundation框架中的NSString对象和NSMutableString对象

    在之前的一篇文章中我们说到了Foundation框架中的NSObject对象,那么今天在在来继续看一下Foundation框架中的常用对象:NSString和NSMutableString. 在OC中 ...

  7. (转载)OC学习篇之---Foundation框架中的NSObject对象

    前一篇文章讲到了OC中的代理模式,而且前几篇文章就介绍了OC中的类相关知识,从这篇文章开始我们开始介绍Foundation框架. OC中的Foundation框架是系统提供了,他就相当于是系统的一套a ...

  8. iOS Foundation框架 -3.利用NSNumber和NSValue将非OC对象类型数据存放到集合

    1.Foundation框架中提供了很多的集合类如:NSArray,NSMutableArray,NSSet,NSMutableSet,NSDictionary,NSMutableDictionary ...

  9. Foundation框架中的NSNumber对象详解

    到目前为止,我们所讨论过的所有数字数据类型,如int型.float型和long型都是Objective-C语言中的基本数据类型,也就是说,它们都不是对象.例如,不能向它们发送消息.然而,有时需要作为对 ...

随机推荐

  1. 事件和委托:第 5 页 委托、事件与Observer设计模式

    原文发布时间为:2008-11-01 -- 来源于本人的百度文章 [由搬家工具导入] 委托、事件与Observer设计模式 范例说明 上面的例子已不足以再进行下面的讲解了,我们来看一个新的范例,因为之 ...

  2. oracle alert 日志位置

    Oracle 11g Alert log 文件位置的问题 https://blog.csdn.net/yujin2010good/article/details/7690191 https://blo ...

  3. 【转】c++ 如何批量初始化数组 fill和fill_n函数的应用

    http://blog.csdn.net/sunquana/article/details/9153213 一. fill和fill_n函数的应用: fill函数的作用是:将一个区间的元素都赋予val ...

  4. HDU 1272: 小希的迷宫(并查集)

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  5. dva/dynamic

    1.安装: yarn add dva 2.引入: import dynamic from 'dva/dynamic'; * dva路由跳转 * dynamic(app, model, componen ...

  6. 关键路径(AOE)---《数据结构》严蔚敏

    // exam1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include &l ...

  7. 怎样更好的设计你的REST API之基于REST架构的Web Service设计及REST框架实现

    一.REST 含状态传输(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格. 眼下在 ...

  8. HDU1542Atlantis(扫描线)

    HDU1542Atlantis(扫描线) 题目链接 题目大意:给你n个覆盖矩形,问最后覆盖的面积. 解题思路:将每一个矩形拆成两条线段,一条是+1的,还有一条是减1的.然后扫描先从上往下扫描,碰到加1 ...

  9. C++中各大有名的科学计算库

    在 C++中,库的地位是非常高的.C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论.现实中,C++的库门类繁多,解决 的问题也是极其广泛,库从轻量 ...

  10. C项目实践--图书管理系统(3)

    接下来将要实现用户管理模块的相关功能,用户管理模块的主要功能包括增加用户,查找用户以及保存用户等功能,查找用户时,如果查找成功,充许对查找到用户进行更新或删除操作.如果查找不成功,则给出相应的提示信息 ...