美文网首页
URL encode 、reloadItemsAtIndexPa

URL encode 、reloadItemsAtIndexPa

作者: th先生 | 来源:发表于2020-12-31 14:35 被阅读0次

今天来给刚入行的学弟学妹来一点干货。

知其然不知其所以然,encode 大家并不陌生,开发中都会用到的东西。
废话不多说,直接上:
有时我们会遇到这样的需求,就是URL传参

https://host+path?key1=aa&key2=图片url地址(https://....)
or
https://host+path?key1=aa&key2=json串({key1=aa,key2=bb...})

这样的场景下,如果你把图片地址真的拼接到了整个URL中,那么恭喜,你会遇到一个问题,那就是怎么就加载不出来呢? 接着你就会去百度,然后呢,可能就看到我这篇文章了。

上面的URL之所以不能正常加载,就是它不符合一个http协议的编码规范,浏览器无法正常解析。正确的做法就是我们吧key2对应的传参进行encode编码,把它变成%E2%B3%这种样式的。然后呢,不管是我们去跳转到原生页还是h5页面,由对应的页面取参数的时候再进行decode。

这里是URL的定义与对应的端(原生,h5)去协商好的。

NSString *encodeStr = [ string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

NSString *decodeStr = [urlStr stringByRemovingPercentEncoding]

***************************** 知识点分割线 ******************************

接着说说 reloadItemsAtIndexPaths、reloadRowsAtIndexPaths
这两个方法分别的UICollectionView、UITableView刷新局部cell的方法,在平时的普通的列表中刷新某个cell时调用不会发现有什么不对。

最近我在项目中就遇到了一个复用性问题,当只有一个cell的时候,你去调用上面的方法去刷新当前cell,通过打印就会发现又创建了一个新的cell,如果你用reload方法,就不会有这样的情况。提醒一下大家注意喽。

去掉动画
 [UIView performWithoutAnimation:^{
        [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
    }];

***************************** 知识点分割线 ******************************
enumerateObjectsUsingBlock

- (void) function {
[array enumerateObjectsUsingBlock:^(int _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        if (obj == 1) {
              return;
            // *stop = YES;
        }
    }];

NSLog(@"继续代码");

}

这是个遍历的方法,如果你选择这个方法去遍历,然后在一个函数中去做判断,return操作,那么你的注意一个事情,直接在block中 return;是不能让函数返回的,enumerateObjectsUsingBlock 中的return, 就相当于我们for循环中的continue; 让遍历进入到下一次循环。而后面的代码还会继续执行。

*stop = YES,就相当于for 循环中的break,让遍历停止了,但是函数中enumerateObjectsUsingBlock后面的代码还会继续执行。

enumerateObjectsUsingBlock 中的*stop = YES和 for 循环中的的break 有一点不一样,就是
break,既会打断本次循环,又会终止后面的的循环,
而 *stop = YES,只会中断后面的循环,而不会中断本次循环

如果我们想要中断本次循环,又要中断后面的循环,就要*stop = YES; return;共同使用,就达到了for循环中的break 的效果。

如果你想要让函数return,可以使用for循环,或者在enumerateObjectsUsingBlock外面定义一个变量isNeedReturn = NO; 在block里面设置isNeedReturn = Yes;
在后面的代码中进行判断,然后return;

相关文章

  • URL encode 、reloadItemsAtIndexPa

    今天来给刚入行的学弟学妹来一点干货。 知其然不知其所以然,encode 大家并不陌生,开发中都会用到的东西。废话不...

  • Encode URL StringByAddingPercent

    https://stackoverflow.com/questions/24551816/swift-encode...

  • URL encode && decode

    URL 相关的标准 https://tools.ietf.org/html/rfc1738, 一般需要对 URL ...

  • emmet快捷输入

    将图片编译成data:URL模式(Encode/Decode Image to data:URL) 将光标放在im...

  • Jmeter——HTTP Request 二

    参数详解 字段描述 Name参数名 Value参数值 URL Encode?是否要 URL 编码? 重点:如果参数...

  • 微信oath2授权获取openid

    [1].[代码]获取授权签名链接 function seturl(url){ varnewUrl = encode...

  • PHP敏感函数

    parse_url() file_put_contents() json_encode() imagecreate...

  • js url encode decode

    js encodeURI 和 encodeURIComponent 的区别 一、共同点 把字符串作为 URI 进行...

  • Android URL Encode问题

    一、前言: 在安卓端,他们直接调用URLEncoder.encode(text, encodeType)这样的函数...

  • iOS url进行encode

    URL编码背景 在URI的最初设计时,希望能通过书面转录,比如写在餐巾纸上告诉另外一人,因此URI的构成字符必须是...

网友评论

      本文标题:URL encode 、reloadItemsAtIndexPa

      本文链接:https://www.haomeiwen.com/subject/apoznktx.html