iOS Swift开发的一些坑

0、人难招,特别是对于没钱的小团队,大多数的iOS开发者没有Swift经验,有经验的也并不是很深入

0.1、语言unwrap坑,虽然有自动修正提示,但感觉代码过程不流畅。

1、Realm的缺憾: 最近filter用得多,发现realm的一个真正的毛病,其查询语法关键字和结构和常规标准SQL完全不一致,这真是shit,必须认真看filter部分的文档并多次尝试才能找到真正正确的查询语句结构

2、UIButton的远程图像获取的坑,尝试了很多种方法,最后发现得给他预设一个图像,远程图像加载才能成功,真是一个好坑啊,Android里面好像也见过类似问题。

3、Alamosfire的文件上传,参考:https://*.com/questions/26121827/uploading-file-with-parameters-using-alamofire

  1. // import Alamofire
  2. func uploadWithAlamofire() {
  3. let image = UIImage(named: "bodrum")!
  4. // define parameters
  5. let parameters = [
  6. "hometown": "yalikavak",
  7. "living": "istanbul"
  8. ]
  9. Alamofire.upload(multipartFormData: { multipartFormData in
  10. if let imageData = UIImageJPEGRepresentation(image, 1) {
  11. multipartFormData.append(imageData, withName: "file", fileName: "file.png", mimeType: "image/png")
  12. }
  13. for (key, value) in parameters {
  14. multipartFormData.append((value?.data(using: .utf8))!, withName: key)
  15. }}, to: "upload_url", method: .post, headers: ["Authorization": "auth_token"],
  16. encodingCompletion: { encodingResult in
  17. switch encodingResult {
  18. case .success(let upload, _, _):
  19. upload.response { [weak self] response in
  20. guard let strongSelf = self else {
  21. return
  22. }
  23. debugPrint(response)
  24. }
  25. case .failure(let encodingError):
  26. print("error:\(encodingError)")
  27. }
  28. })
  29. }

4、NavigationViewController的TabBarViewController的内嵌ViewController设置其NavigationButtionItem,请注意,这种情况是因为TabBarVC是NavigationVC的栈顶VC,所以操作它的NavagationItem

  1. let b = UIBarButtonItem( image:#imageLiteral(resourceName: "post_message"), style:.plain, target:self, action:#selector(CommunityViewController.postClick(_:)))
  2. elf.tabBarController?.navigationItem.rightBarButtonItem = b
上一篇:在Eclipse中通过JDBC连接MySQL步骤,非常详细!


下一篇:编译预处理命令--define和ifdef的使用