Foundation框架(NSString)

来源:互联网 发布:php函数别名 编辑:程序博客网 时间:2024/06/05 19:32

    • Foundation框架介绍
    • NSString介绍及基本使用

Foundation框架介绍

1)什么是框架
Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组,字典和集合,其他功能包括处理日期和时间、内存管理、处理文件系统、存储(或归档)对象、处理集合数据结构(如点和长方形)
Cocoa是Foundation和AppKit
Cocoa Touch是Foundation和UIKit
2)Foundation框架的作用
Foundation框架是Mac\iOS中其他框架的基础
Foundation框架包含了很多开发中常用的数据类型:
结构体
枚举
3)如何使用Foundation框架
要想使用Foundation框架中的功能,包含它的主文件即可
#import <Foundation/Foundation.h>
4)不小心修改了系统的文件,引起的错误
有时候会在不经意之间修改了系统自带的头文件,比如NSString.h,这时会出现以下错误:这里写图片描述
只需要删除Xcode的缓存即可,缓存路径是:/Users/用户名/Library/Developer/Xcode/DerivedData(默认情况下,这时一个隐藏文件夹),要想看到上述文件,必须在终端敲指令显示隐藏文件夹,指令如下:
显示隐藏文件:defaults write com.apple.finder AppleShowAllFiles - bool true
隐藏隐藏文件: defaults write com.apple.finder AppleShowAllFiles - bool false
输入指令后,记得重启Finder

NSString介绍及基本使用

1.什么是NSString?
一个NSString对象就代表一个字符串(文字内容)
一般称NSString为字符串类

2.NSString的创建方式
1 最直接的方式:
NSString * str = @"abc"; (这是常量字符串)

2 格式化的方式:

NSString * st2 = [NSString stringWithFormat:@"%@", @"jack"];NSString * str = [[NSString alloc]initWithFormat:@"My age is %d", 10];//这种写法,字符串存储在内存的堆区(地址不一样)

3 从文件中读取

main.m#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){    @autoreleasepool{        //定义要写入的字符串        NSString * str = @"welcome to BeiJing";        //开始写入文件        NSError * err;        [str writeToFile:@"/Users/xx/Desktop/1.txt" atomically: YES encoding: NSUTF8StringEncoding error: &err];        if (err != nil){            NSLog("写入失败");        }else{            NSLog(@"写入成功!");        }    }    return 0;}

4 从文件中读取字符串显示到控制台上

NSString * str5 = [NSString stringWithContentsOfFile: @"/Users/apple/Desktop/t.txt" encoding:NSUTF8StringEncoding error: &err];if (err == nil){    NSLog(@"读取成功");    NSLog(@"%@", str5);}else{    NSLog(@"读取失败");    //可以打印err的信息    NSLog(@"%@", err);    //可以通过[err localizedDescription];打印简单的错误信息    //NSLog(@"%@", [err localizedDescription]);}

5 使用USURL读写字符串
URL的全称是Uniform Resource Locator(统一资源定位符)
URL是互联网上标准资源的地址,每个资源都有一个唯一的URL,它包含的信息指出资源的位置,根据一个URL就能找到唯一的一个资源

1.URL的格式:
基本URL包含协议、主机域名(服务器名称\IP地址)、路径
举例: http://ios.itcast.cn/ios/images/content_25.jpg
可以简单认为:URL = 协议头://主机域名/路径

2.使用NSURL读写字符串

//传入完整的字符串创建NSURL * url = [NSURL URLWithString:@"file://Users/apple/Desktop/str.txt"];//通过文件路径创建(默认就是file协议的)NSURL * url1 = [NSURL fileURLWithPath:@"/Users/apple/Desktop/str.txt"]

6 NSString常见方法

-(NSString *)uppercaseString;//全部转换为大写字母-(NSString *)lowercaseString;//全部字符转为小写字母-(NSString *)capitallizedString//首字母变大写,其他字母都变小写。如果一个句子中有多个单词,那么会将每个单词的首字母变成大写,其余字母变成小写-(BOOL)isEqualToString:(NSString *)aString;//两个字符串内容的比较,相同返回YES,不同返回NO//注意: == 比较的是两个对象的地址是否相同,不是字符串的内容-(NSComparisonResult)compare:(NSString *)string;//这个方法可以用来比较两个字符串内容的大小//比较方法,逐个字符地进行比较ASCII值,返回NSComparisonResult作为比较结果//NSComparisonResult是一个枚举,有3个值://如果左侧 > 右侧, 返回NSOrderedDescending,//如果左侧 < 右侧, 返回NSOrderedAscending,//如果左侧 ==右侧, 返回NSOrderedSame-(NSComparisonResult)caseInsensitiveCompare:(NSString *)string;//忽略大小写进行比较,返回值与compare一致-(BOOL)hasPrefix:(NSString * )aString;//是否以aString开头-(BOOL)hasSuffix:(NSString *)aString//是否以aString结尾-(NSRange)rangOfString:(NSString *)aString;//用来检查字符串是否包含了aString//如果包含,就返回aString的范围,不包含,NSRange的location为NSNotFound,length为0[str rangeOfString:@"str" options:NSBackwardsSearch];//从后向前搜索-(NSString *)substringFromIndex:(NSUInteger)from;//从指定位置from开始(包括指定位置的字符)到尾部-(NSString *)substringToIndex:(NSUInteger)to;//从字符串的开头一直截取到指定的位置to,但不包括该位置的字符-(NSString *)substringWithRange:(NSRange)range;//按照所给出的NSRange从字符串中截取子串-(NSString *)stringByReplacingOccurencesOfString:(NSString * )target withString:(NSString *)replacement;//用replacement替换target-(NSUInteger)length;//返回字符串的长度(有多少个字符)-(unichar)characterAtIndex:(NSUInteger)index;//返回index位置对应的字符//字符串转为基本数据类型-(double)doubleValue;-(float)floatValue;-(int)intValue;-(char *)UTF8String; //在操作SQLite数据时才会用到//转换为C语言字符串NSString * s1 = @"123";char * s2 = s1.UTF8String;printf("%s", s2);//去除所有的空格[str stringByReplacingOccurrencesOfString:@"" withString:@""]//去除首尾的空格[str stringByTrimmingCharatersInSet:[NSCharacterSet whitespaceCharacterSet]];{    //指定条件比较字符串的大小    NSString *str = @"abc";    NSString * str2 = @"aBc";    NSComparisonResult result = [str compare: str2 options: NSCaseInsensitiveSearch];//不区分大小写,结果为0,表示相等    NSComparisonResult result1 = [str compare:str2 options:NSNumericSearch];//按照个数比较,字符个数多的为大    //并且可以使用"|"来同时满足多个条件    if([str compare:str2 options:NSCaseInsensitiveSearch | NSNumericSearch] == NSOrderedSame){        NSLog(@"They match!");    }}-(NSRange)rangeOfString:(NSString *)aString;//字符串的查,用来查找字符串内容中是否包含了aString如果包含,就返回aString在字符串中第一次出现的范围[str rangeOfString: @"str" options: NSBackwardsSearch];//从后向前搜索

7 NSRange使用
1.NSRange是Foundation框架中比较常用的结构体,它的定义如下:
typedef struct _NSRange{
NSUInteger location; //表示该范围的起始位置
NSUInteger length;//表示该范围的长度
}NSRange;
//NSUInteger的定义
typedef unsigned int NSInteger;
typedef unsigned long NSUInteger;

2.NSRange的创建
方式1:

NSRange range;range.location = 7;range.length = 3;

方式2:

NSRange range = {7, 3};或者NSRange range = {.location = 7, .length = 3};

方式3:

NSRange range = NSMakeRange(7, 3);

方式4:最直接的方式

NSRange range = {5, 8};

查看Range的值,可以使用

NSLog(@"%@", NSStringFromRange(range));

8.字符串的其他用法
1.获取字符串的每个字符

NSString * str = @"ios.itcast.cn";for (int i = 0; i<str.length; i++){    unichar c = [str characterAtIndex:i];    printf("%c\t", c);}
0 0
原创粉丝点击