欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS路由跳转(一)之初识URL

程序员文章站 2022-05-04 09:25:00
ios路由跳转(一)之初识url。由于url使用范围非常的广泛,而且无论,ios,android,h5都有相关的解析方法,不用重新写相关的解析方法,可以减少大家的工作量,具有普遍适用性。 url组成...

ios路由跳转(一)之初识url。由于url使用范围非常的广泛,而且无论,ios,android,h5都有相关的解析方法,不用重新写相关的解析方法,可以减少大家的工作量,具有普遍适用性。

url组成:
protocol :// hostname[:port] / path / [;parameters][?query]#fragment

协议://主机名[:端口]/ 路径/[:参数] [?查询]#fragment
我们protocol起一个名字,我们这里暂且叫做hzsp zs 张三的首字母,嘿嘿
我们的hostname 叫做zsapp 为了区分不同的app
port: 10001 我这里用端口号作为moduleid
路径:可以是跳转到模块的指定页面
参数:? 后面的就是参数,我们可以简单写一个解析的代码转换为nsdictionary对象
我这里简单拼接了一个url如下:

hzsp://zsapp:10001/china/abc.com?a=1&b=2
如何解析服务器地址
 //拼接后最终的url
    nsurl *targeturl = [nsurl urlwithstring:url];
    nsstring *hostname = targeturl.host
如何解析端口号
    nsnumber *moduleid = targeturl.port;
如何解析指定的路径
        nsstring *subpath = [targeturl path];
如何解析参数
nsstring *parameterstr = [[targeturl query] stringbyreplacingpercentescapesusingencoding:nsutf8stringencoding];

nsmutabledictionary *dic = [nsmutabledictionary dictionary];
        nsarray *parameterarr = [parameterstr componentsseparatedbystring:@"&"];
        for (nsstring *parameter in parameterarr) {
            nsarray *parameterboby = [parameter componentsseparatedbystring:@"="];
            if (parameterboby.count == 2) {
                [dic setobject:parameterboby[1] forkey:parameterboby[0]];
            }else
            {
                nslog(@"参数不完整");
            }
        }

通过以上方法,我们已经有了实现路由跳转的基本思路。
在下一篇,我会和大家分享具体如何实现路由跳转以及实现路由跳转的要求有哪一些,优势有哪一些。