创建: 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. java多线程调试

    1. 多线程调试 https://blog.csdn.net/bramzhu/article/details/52367052 https://www.jb51.net/article/129632. ...

  2. msp430项目编程07

    msp430中项目---简单计算器 1.扫描键盘工作原理 2.电路原理说明 3.代码(显示部分) 4.代码(功能实现) 5.项目总结 msp430项目编程 msp430入门学习

  3. make only output error/warning message( 编译时,只输出错误信息和警告信息)

    make > /dev/null 这样,正常的信息被重定向输出到/dev/null,错误和警告信息会输出到标准错误设备(standard error,相对于标准输入/输出设备来说).

  4. Python数据分析常用的库总结

    Python之所以能够成为数据分析与挖掘领域的最佳语言,是有其独特的优势的.因为他有很多这个领域相关的库可以用,而且很好用,比如Numpy.SciPy.Matploglib.Pandas.Scikit ...

  5. 2887 Big String

    splay瞎搞一下,正解是分块数组或分块链表,但是学不会啊! #include<cstdio> #include<cstdlib> #include<iostream&g ...

  6. Wannafly挑战赛1

    地址:https://www.nowcoder.com/acm/contest/15#question A(树形dp) 分析 dp[i][0],dp[i][1]分别表示以i为根的子树中,有多少个点到i ...

  7. SQL Server vNext CTP 1.2

    https://msdn.microsoft.com/en-us/library/mt788653.aspx

  8. 我的Android Studio 优化之路

    改动keymap 改动经常使用的快捷键 代码补全(Eclipse: ALT+/) Android Studio中默认用的是Ctrl+Space, 这跟输入法切换冲突.找到Keymap->Main ...

  9. Deepin-安装(读写文件)权限

    在安装NODE管理模块N时,遇到了权限问题 1.给予程序读写权限(仅限文件夹) 查看权限:ls -l 或 ls 添加权限: 示例:chmod +rw xx 实例:chmod +rw node 关于权限 ...

  10. SQL FULL OUTER JOIN 关键字

    SQL FULL OUTER JOIN 关键字 SQL FULL OUTER JOIN 关键字 FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配 ...