《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 <一>

简介:

Foundaton基础

framework框架

1.Foundation框架的类结构关系

复制代码
 1 int main(int argc, const char * argv[]) {
 2  @autoreleasepool {
 3 //C语言字符串  4 char *ch = "Hello objective-c";
 5 NSString *ns = @"Hello c";
 6 //OC、C语言之间的转换
 7 //C语言->OC语言  8 NSString *oc = [NSString stringWithUTF8String:ch];
 9 NSLog(@"转为oc语言的字符串:%@",oc);
10 //OC语言->C语言 11 const char *c = [ns UTF8String];
12 NSLog(@"转为c语言的字符串:%s",c);
13  }
14 return 0;
15 }
复制代码
复制代码
 1 int main(int argc, const char * argv[]) {
 2  @autoreleasepool {
 3 //创建字符串  4 NSString *str1 = @"Hello world1!";
 5 NSString *str2 = [[NSString alloc] init];
 6 str2 = @"Hello world2";
 7 //格式化字符串  8 int a = 10;
 9 int b = 20;
10 NSLog(@"%@",[NSString stringWithFormat:@"a=%d, b=%d",a,b]);
11 //拼接字符串 12 NSString *str3 = [str1 stringByAppendingString:str2];
13 NSLog(@"%@",str3);
14 //大小写转换 15 NSString *str4 = @"ABCDEF";
16 NSString *str5 = [str4 lowercaseString];
17 NSLog(@"%@",str5);
18 NSString *str6 = [str5 uppercaseString];
19 NSLog(@"%@",str6);
20 //前缀后缀的判断 21 NSString *str7 = @"www.goodboy.heyang";
22 BOOL hasPreFix = [str7 hasPrefix:@"www"];
23 if (hasPreFix) {
24 NSLog(@"str7有 www 的前缀。");
25  }
26 BOOL hasSufFix = [str7 hasSuffix:@"heyang"];
27 if (hasSufFix) {
28 NSLog(@"str7有 heyang 后缀。");
29  }
30  }
31 return 0;
32 }
复制代码
复制代码
 1 int main(int argc, const char * argv[]) {
 2  @autoreleasepool {
 3 //判断两个字符串是否相同  4 NSString *str1 = @"Hello";
 5 NSString *str2 = @"Hello";
 6 if ([str1 isEqualToString:str2]) {
 7 NSLog(@"两个字符是一致的。");
 8 }else{
 9 NSLog(@"不一致!");
10  }
11 12 //比较字符串
13 //NSComparisonResult需要自己去查阅相关的资料
14 15 //分割,按照指定字符分割字符串 16 NSString *str3 = @"a,b,c,d,e,f,g";
17 NSArray *strArray = [str3 componentsSeparatedByString:@","];
18 for(NSString *str in strArray){
19 NSLog(@"str = %@",str);
20  }
21 /*验证正则表达式失败
22  NSString *str4 = @"1+2-3/9";
23  NSArray *strArray2 = [str4 componentsSeparatedByString:@"[\+\-\*\/]"];
24  for(NSString *str in strArray2){
25  NSLog(@"str = %@",str);
26  }
27 */ 28 //按照范围截取字符串,注意这里是结构体实例,所以不需要指针 29 NSRange range = NSMakeRange(1, 5);//前面是截取的起点,后面是长度,于是截取的是1~4 30 NSString *str5 = [str3 substringWithRange:range];
31 NSLog(@"str5 = %@",str5);
32 //从某一位开始截取后面的字符串 33 NSString *str6 = [str3 substringFromIndex:2];
34 NSLog(@"str6 = %@",str6);
35 //从开始截取到某一位 36 NSString *str7 = [str3 substringToIndex:2];
37 NSLog(@"str7 = %@",str7);
38 39 //将字符串拆分为每一个字符 40 for (int i = 0; i<[str3 length]; i++) {
41 NSLog(@"%c ",[str3 characterAtIndex:i]);
42  }
43  }
44 return 0;
45 }
复制代码

这是NSRange的源码,NSRange不是一个类,而是一个结构体,所以创建一个结构体就不能用指针,然后注意创建这个NSRange方法就是调用NSMakeRange( int , int )方法。

复制代码
 1 int main(int argc, const char * argv[]) {
 2  @autoreleasepool {
 3 //查找  4 NSString *str1 = @"ab cd ef gh ij ab";
 5 //查找指定字符串的位置  6 NSRange range1 = [str1 rangeOfString:@"ab"];
 7 NSLog(@"%ld 和 %ld",range1.location,range1.length);
 8  9 //替换 10 NSString *str2 = @"Hello ios,Hello heyang";
11 //替换某一个范围的内容 12 NSString *str3 = [str2 stringByReplacingCharactersInRange:NSMakeRange(6, 3) withString:@"android"];
13 NSLog(@"%@",str3);
14 //指定字符串替换源字符串中的字串,前面一个参数是要被替换的内容,后一个参数是替换后的内容 15 NSString *str4 = [str2 stringByReplacingOccurrencesOfString:@"Hello" withString:@"你好"];
16 NSLog(@"%@",str4);
17 18 //读取文件
19 //文件来源:1.本地文件 2.网络文件
20 //路径类 21 NSString *strurl = @"http://www.cnblogs.com/goodboy-heyang/p/4659795.html";
22 NSString *strurl2 = @"/Users/HeYang/Desktop/Hello.txt";
23 //网络路径 24 NSURL *httpurl = [NSURL URLWithString:strurl];
25 //本地路径
26 // NSURL *fileurl = [NSURL fileURLWithPath:strurl2];读取本地路径可以不需要URL路径类,直接用路径字符串就可以了
27 //读取网络数据 28 NSString *httpstr = [NSString stringWithContentsOfURL:httpurl encoding:NSUTF8StringEncoding error:nil];
29 NSLog(@"%@",httpstr);
30 //读取本地文件 31 NSString *filestr = [NSString stringWithContentsOfFile:strurl2 encoding:NSUTF8StringEncoding error:nil];
32 NSLog(@"%@",filestr);
33 34 //写入文件 35 NSString *str5 = @"Hello developer";
36 BOOL isok = [str5 writeToFile:@"/Users/HeYang/Desktop/Demo.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
37 if (isok) {
38 NSLog(@"文件写入成功~");
39 }else{
40 NSLog(@"文件写入失败~");
41  }
42  }
43 return 0;
44 }
复制代码

实战演练:查找天气预报城市列表的某一个城市:"玉山"以及它在城市列表中的序号。天气预报城市列表的网址:http://api.k780.com:88/?app=weather.city&&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json

要求:两种方式:1⃣️本地文件查找2⃣️网络数据加载后查找

1⃣️本地文件查找方式:

先通过这个城市列表的网址获取所有关于城市的列表数据,然后复制粘贴到新建的纯文本记事本上,保存到桌面上,文件名为:file.txt

然后通过应用前面的基础:

复制代码
 1 #import <Foundation/Foundation.h>
 2  3 int main(int argc, const char * argv[]) {
 4  @autoreleasepool {
 5 //路径,在桌面创建一个file.txt纯文本,然后通过终端可以获取完整路径  6 NSString *filepath = @"/Users/HeYang/Desktop/file.txt";
 7 //读取本地文件数据存储在一个NSString对象中:  8 NSString *filestr = [NSString stringWithContentsOfFile:filepath encoding:NSUTF8StringEncoding error:nil];
 9 NSRange range = [filestr rangeOfString:@"玉山"];
10 NSLog(@"%ld 和 %ld",range.location,range.length);
11 NSRange findrange = NSMakeRange(range.location-33, 76);
12 NSString *findstr = [filestr substringWithRange:findrange];
13 NSLog(@"%@",findstr);
14 15  }
16 return 0;
17 }
复制代码

运行结果:

2⃣️网络数据加载后查找

开始出现了错误。

纠正之后:

复制代码
 1 int main(int argc, const char * argv[]) {
 2  @autoreleasepool {
 3 //获取网络路径  4 NSString *strurl = @"http://api.k780.com:88/?app=weather.city&&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json";
 5 NSURL *url = [NSURL URLWithString:strurl];
 6  7 NSString *httpstr = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
 8 //然后是查找“玉山”  9 NSRange range = [httpstr rangeOfString:@"玉山"];
10 NSLog(@"%ld 和 %ld",range.location,range.length);
11 12 //然后是查找"玉山"的前后全面信息,这个需要不断更改range的起点位置和长度
13 //纠正一下,这里虽然目的是查找,但是实际上是截取目标位置和长度的字符串,所以用的是截取方法 14 NSRange range1 = NSMakeRange(range.location-33, 76);
15 NSString *findstr = [httpstr substringWithRange:range1];
16 NSLog(@"%@",findstr);
17  }
18 return 0;
19 }
复制代码

运行结果是:


相关文章
|
2月前
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
145 66
|
3月前
|
开发框架 Dart Android开发
安卓与iOS的跨平台开发:Flutter框架深度解析
在移动应用开发的海洋中,Flutter作为一艘灵活的帆船,正引领着开发者们驶向跨平台开发的新纪元。本文将揭开Flutter神秘的面纱,从其架构到核心特性,再到实际应用案例,我们将一同探索这个由谷歌打造的开源UI工具包如何让安卓与iOS应用开发变得更加高效而统一。你将看到,借助Flutter,打造精美、高性能的应用不再是难题,而是变成了一场创造性的旅程。
|
3月前
|
搜索推荐 数据管理 定位技术
iOS应用开发中有多种主流框架
iOS应用开发中有多种主流框架
303 60
|
3月前
|
iOS开发 开发者
探索iOS开发中的SwiftUI框架
【10月更文挑战第39天】在苹果的生态系统中,SwiftUI框架以其声明式语法和易用性成为开发者的新宠。本文将深入SwiftUI的核心概念,通过实际案例展示如何利用这一框架快速构建用户界面,并探讨其对iOS应用开发流程的影响。
|
4月前
|
Swift iOS开发 开发者
探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】在苹果生态系统中,SwiftUI的引入无疑为iOS应用开发带来了革命性的变化。本文将通过深入浅出的方式,带领读者了解SwiftUI的基本概念、核心优势以及如何在实际项目中运用这一框架。我们将从一个简单的例子开始,逐步深入到更复杂的应用场景,让初学者能够快速上手,同时也为有经验的开发者提供一些深度使用的技巧和策略。
77 1
|
4月前
|
移动开发 网络协议 小程序
基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v9.1版已发布
RainbowChat是一套基于开源IM聊天框架 MobileIMSDK 的产品级移动端IM系统。RainbowChat源于真实运营的产品,解决了大量的屏幕适配、细节优化、机器兼容问题
94 5
|
5月前
|
iOS开发 开发者 UED
探索iOS应用开发中的SwiftUI框架
【9月更文挑战第26天】 在iOS开发的海洋中,SwiftUI犹如一艘现代的快艇,引领着开发者们驶向更加高效与直观的编程体验。本文将带你领略SwiftUI的魅力,从其设计理念到实际应用,我们将一步步揭开它如何简化界面构建过程的面纱。通过对比传统方式,你将看到SwiftUI如何让代码变得像诗一样优美,同时保持强大的功能性和灵活性。准备好让你的iOS开发技能加速升级,一起驾驭这股新潮流吧!
|
5月前
|
前端开发 iOS开发 开发者
探索iOS开发中的SwiftUI框架
【9月更文挑战第21天】在iOS应用开发的广阔天地中,SwiftUI框架如一股清新之风,为开发者带来了声明式语法的便捷与高效。本文将深入探讨SwiftUI的核心概念、布局方式及数据绑定机制,同时通过实例演示如何运用SwiftUI构建用户界面,旨在引领读者领略SwiftUI的魅力,并激发其对iOS开发新趋势的思考与实践。
57 6
|
5月前
|
开发工具 Swift iOS开发
探索iOS开发中的SwiftUI框架
【9月更文挑战第1天】在本文中,我们将一起潜入iOS开发的海洋,特别聚焦于SwiftUI这一现代且富有表现力的框架。SwiftUI不仅简化了界面设计流程,还为开发者提供了声明式Swift语法的便利。通过这篇文章,你将学会如何利用SwiftUI构建灵活且响应式的用户界面,并理解其背后的原理。无论你是刚入门的新手还是寻求进阶的开发者,本文都将为你提供有价值的指导和启示。
|
6月前
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。

热门文章

最新文章

  • 1
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 3
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 4
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 5
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 6
    iOS8 中无需开源库的内置功能一览
  • 7
    iOS7应用开发7:自定义视图、手势操作
  • 8
    IOS小工具以及精彩的博客
  • 9
    Facebook SDK(iOS)初学讲解
  • 10
    iOS - Swift NSPoint 位置
  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    14
  • 2
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    28
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    34
  • 4
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 5
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 6
    uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
    143
  • 7
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
    235
  • 8
    app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
    90
  • 9
    深入探索iOS开发中的SwiftUI框架
    145
  • 10
    ios样式开关按钮jQuery插件
    60