Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iOS开发:从本地文件读取字符串:stringWithContentsOfFile&initWithContentsOfFile

iOS开发:从本地文件读取字符串:stringWithContentsOfFile&initWithContentsOfFile

作者头像
陈满iOS
发布于 2018-09-10 03:18:37
发布于 2018-09-10 03:18:37
3.3K00
代码可运行
举报
文章被收录于专栏:陈满iOS陈满iOS
运行总次数:0
代码可运行

1. 定义的区分

1. stringWithContentsOfFile
  • 用法

Returns a string created by reading data from the file at a given path interpreted using a given encoding.

  • 声明
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+ (instancetype)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError * _Nullable *)error;
2. initWithContentsOfFile
  • 用法

Returns an NSString object initialized by reading data from the file at a given path using a given encoding.

  • 声明
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (instancetype)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError * _Nullable *)error;

2. 用法示例

1. 加载本地.json文件
  • stringWithContentsOfFile
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSString *jsonPath = [[NSBundle mainBundle] pathForResource:@"sectionMdl23" ofType:@"json"];
NSString *JSONString = [NSString stringWithContentsOfFile:jsonPath encoding:NSUTF8StringEncoding error:nil];
NSLog(@"sssssssss%@",JSONString);
  • initWithContentsOfFile
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSString *jsonPath = [[NSBundle mainBundle] pathForResource:@"sectionMdl23" ofType:@"json"];
NSString *JSONString = [[NSString alloc] initWithContentsOfFile:jsonPath encoding:NSUTF8StringEncoding error:nil]];
NSLog(@"sssssssss%@",JSONString);
2. 加载本地.html文件
  • stringWithContentsOfFile
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSString *path = [[NSBundle mainBundle] pathForResource:@"html/start" ofType:@"html"];
NSString *htmlString1 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
NSString *urlStr = [NSString stringWithFormat:@"%@/html",[[NSBundle mainBundle] bundlePath]];
NSURL *url = [NSURL fileURLWithPath:urlStr isDirectory:YES];
[self.webView loadHTMLString:htmlString1 baseURL:url];
  • initWithContentsOfFile
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSString *path = [[NSBundle mainBundle] pathForResource:@"html/start" ofType:@"html"];
NSString *htmlString1 =[[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL]];
NSString *urlStr = [NSString stringWithFormat:@"%@/html",[[NSBundle mainBundle] bundlePath]];
NSURL *url = [NSURL fileURLWithPath:urlStr isDirectory:YES];
[self.webView loadHTMLString:htmlString1 baseURL:url];

3. 为了什么要读取本地.json和.html数据?

1. 场景:让webview加载本地html文件

可以利用loadHTMLString渲染html字符串的方式加载网页。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationItem.title = self.titleStr;
    [self.webView loadHTMLString:[self getTheHtmlString] baseURL:nil];
}

#pragma mark - 处理html字符串
- (NSString *)getTheHtmlString{
    
    //1.配置模版信息
    NSString *path = [[NSBundle mainBundle] pathForResource:self.htmlName ofType:@"html"];
    NSString *htmlStr = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

    //2.替换关键字: {电话}
    NSString *mobileno = self.getCustInfoModel.mobileno;
    if (nil == mobileno) {
         mobileno = @"";
    }
    strUrl = [htmlStr stringByReplacingOccurrencesOfString:@"{电话}" withString:mobileno];
    return strUrl;
}
2. 场景:由本地json文件决定VC的数据源

例如,下面的代码是为了从JSON读取设计好的数据,来决定一个VC的数据源。而这个VC是一个已经被封装好的类,其显示内容高度依赖于按照设定规则写好的JSON。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//本地json
- (void)initData {
    NSString *jsonPath = [[NSBundle mainBundle] pathForResource:@"sectionMdl23" ofType:@"json"];
    NSString *jsonStr = [[NSString alloc] initWithContentsOfFile:jsonPath encoding:NSUTF8StringEncoding error:nil];
    if (jsonStr != nil) {
    
        NSData *jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
        NSError *err;
        NSMutableDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];
        
        @try{
            SupplementModel *sectionArrModel = [SupplementModel mj_objectWithKeyValues:jsonDict];
            self.sectionMdlArr = sectionArrModel.data;
            
            //增加数据
            [self.sectionMdlArr enumerateObjectsUsingBlock:^(SectionModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
                if (obj.sectionType == 2) {
                    obj.cellExampleModelArr = [obj.cellModelArr mutableCopy];
                }
            }];
            
        }@catch(NSException *exception) {
            [Toast showBottomWithText:kServerErrorMsg];
        }
        [self.tableView reloadData];
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.03.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【IOS开发基础系列】UIWebView专题
iOS: UIWebview loadhtmlstring & Local css/js/imageresources
江中散人_Jun
2023/10/16
5830
【IOS开发基础系列】UIWebView专题
iOS_与H5界面JSBridge交互Demo
我用了一个library(GCWebviewJSBridge-iOS), github网址:github.com/wheying/GCWebviewJSBridge-iOS
mikimo
2022/07/20
8710
全面解析 JavaScriptCore 相关特性
目前越来越多的移动应用采用 Hybird App 模式来开发,即混合了 Native 技术与 Web 技术 进行开发。在 iOS 开发中,JavaScriptCore 框架支持 JS 与 OC 直接互相调用,从而实现动态化方案。
网罗开发
2021/01/29
1.4K0
全面解析 JavaScriptCore 相关特性
iOS下JS与OC互相调用(六)--WKWebView + WebViewJavascriptBridge
上一篇文章介绍了UIWebView 如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用,这一篇来介绍一下WKWebView 又是如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用的。WKWebView 下使用WebViewJavascriptBridge与UIWebView 大同小异。主要是示例化的类不一样,一些与webView 相关的API调用不一样罢了。
Haley_Wong
2018/08/22
5.2K0
iOS下JS与OC互相调用(六)--WKWebView + WebViewJavascriptBridge
ios网络编程学习
在网络编程中,从服务器获取的数据格式大致分为两种:JSON和XML。其中JSON作为一种轻量级的数据交换格式,正在逐步取代XML, 成为网络数据的通用格式。
tandaxia
2018/09/27
8940
iOS下JS与OC互相调用(二)--WKWebView 拦截URL
在上篇文章中讲述了使用UIWebView拦截URL的方式来处理JS与OC交互。 由于UIWebView比较耗内存,性能上不太好,而苹果在iOS 8中推出了WKWebView。 同样的用WKWebView也可以拦截URL,做JS 与OC交互。关于WKWebView与UIWebView的对比,大家请自动百度或者google。
Haley_Wong
2018/08/22
4K0
iOS下JS与OC互相调用(二)--WKWebView 拦截URL
iOS小技能:WKWebView与JS的交互
由于目前UIWebView 已经被抛弃了,因此推荐使用WKWebView的WKScriptMessageHandler实现iOS与JS交互
公众号iOS逆向
2022/12/19
8.3K0
iOS小技能:WKWebView与JS的交互
WKWebView的使用
WKWebView的使用 前言 最近项目中的UIWebView被替换为了WKWebView,因此来总结一下WKWebView的使用。 示例Demo:WKWebView的使用 本文将从以下几方面介绍WKWebView: 1、WKWebView涉及的一些类 2、WKWebView涉及的代理方法 3、网页内容加载进度条的实现 4、JS和OC的交互 5、本地HTML文件的实现 一、WKWebView涉及的一些类 WKWebView:网页的渲染与展示 注意: #import <WebKit/WebKi
且行且珍惜_iOS
2018/06/19
3.3K0
TNN iOS非图像模型入门
TNN是腾讯优图实验室开源的高性能、轻量级神经网络推理框架TNN((https://github.com/Tencent/TNN/blob/master/README_CH.md)),github上也有比较详细的例子来说明如何在端上运行图像类的模型,但demo 更多是图像类相关的示例,而且里面做了一层层的封装,很难让一个初学者直接上手一步步构建出可推理的结果, 本文主要从初学者的角度出发,按照TNN的API文档一步步构建出非图像模型的入门文档。(本文不再详述如何编译和集成TNN工程,有需要的同学可直接参考Demo文档);
stringwu
2022/08/12
7380
POST上传各种数据类型(包括图片)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/50914384
用户1451823
2018/09/13
2.9K0
iOS加载本地HTML、pdf、doc、excel文件 & HTML字符串与富文本互转
如果你有需求在手机端打开本地html的需求,又觉得使用其他方法麻烦或者不管用的时候,推荐你可以自己写个简单的app进行打开。
公众号iOS逆向
2021/07/05
2.2K0
理解iOS端的WebView同层组件
同层渲染是利用原生技术来优化Web渲染一种技术,很多人了解它是起于微信开放社区发布的一篇关于小程序渲染原理剖析的文章。我将链接附上:
珲少
2023/01/01
3.6K2
理解iOS端的WebView同层组件
iOS小技能:右滑返回
原理:利用系统的返回手势interactivePopGestureRecognizer进行实现
公众号iOS逆向
2022/08/22
2.5K0
iOS小技能:右滑返回
JSPatch库, 一个Apple官方支持的实现在线更新iOS应用的库
简介 项目主页: https://github.com/bang590/JSPatch 示例下载: https://github.com/ios122/ios122 JSPatch 可以让你用 Jav
ios122
2018/01/02
1.3K0
iOS与JS的交互
iOS和JS的交互看似两个问题,其实要解决的问题只有一个,那就是JS如何调用native方法。因为查询文档我们就可以发现,在UIWebView中,native有直接调用JS的方法, 但是JS却没有直接调用native的方法。 一、native直接调用js的方法: -(NSString*)stringByEvaluatingJavaScriptFromString :(NSString *)script; 二、JS直接调用native的方法 其实,UIWebView并没有提供JS调用native的方法,但是我
梧雨北辰
2018/04/24
4.6K0
WKWebview 与App交互辅助工具类
之前lz公众号写个关于UIWebView的JS与App通信的文章,但是最新iOS审核规定需要替换掉UIWebView使用WKWebView才可以过审。但是之前有大量UIWebView交互的地方,怎么办?于是根据原有的交互经验抽离出来了LeeWKWebView……当然了希望大家能够喜欢,多多提意见
大话swift
2020/05/07
1K0
UIWebView的使用
@interface ViewController ()<UIWebViewDelegate> @property (weak, nonatomic) IBOutlet UIBarButtonItem backItem; @property (weak, nonatomic) IBOutlet UIBarButtonItem forwardItem; @property(nonatomic,weak)UIWebView * webView; (IBAction)back; (IBAction)forwar
大师级码师
2021/10/31
5370
ASI框架使用全集讲解
#import "ViewController.h" import "ASIHTTPRequest.h" import "ASIFormDataRequest.h" import "DACircularProgressView.h" @interface ViewController ()<ASIHTTPRequestDelegate> @property(nonatomic,strong) NSMutableData *data; @property(nonatomic,weak) DACircular
大师级码师
2021/10/31
4680
UI篇- UIWebView使用大全
UIWebView是常用开发控件,对于一些常用的设置是有必要记住或者记录下来的。 这里特别说一下,对于一个工程中整个就是一个WebView的情况,你可以通过一些设置来使整个工程显得接近于原生开发的APP,这样你是有机会被审核通过的。
進无尽
2018/09/12
2.4K0
UI篇- UIWebView使用大全
iOS下JS与OC互相调用(一)--UIWebView 拦截URL
最近准备把之前用UIWebView实现的JS与原生相互调用功能,用WKWebView来替换。顺便搜索整理了一下JS 与OC 交互的方式,非常之多啊。目前我已知的JS 与 OC 交互的处理方式:
Haley_Wong
2018/08/22
4K0
iOS下JS与OC互相调用(一)--UIWebView 拦截URL
相关推荐
【IOS开发基础系列】UIWebView专题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验