Xcode插件的实现-JSON格式化
发表于|更新于
|浏览量:
背景:开发中经常遇到需要格式化JSON字符串的情况,每次都是百度在线格式化解析好不方便,某天看到APP Store里有Xcode关于这个的插件,卖的老贵了,哈哈哈,于是就想自己也弄一个,先调研一下JSON格式化的实现原理,然后再看看Xcode插件的实现,最后还可以写个Mac版,给自己大大的赞😄
文章作者: 今是昨非
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 今是昨非的博客!
相关推荐
2021-04-21
iOS 删除新创建项目中的SceneDelegate
iOS 删除新创建项目中的SceneDelegate背景Xcode 11之后新建工程,默认为有SceneDelegate,但是SceneDelegate是从iOS 13之后才有的,如果最低兼容版本到iOS 13以下,需要怎么做呢? 过程首先来看一下,SceneDelegate是什么,为什么会有SceneDelegate 官方说明: A UISceneSession object manages a unique runtime instance of your scene. When the user adds a new scene to your app, or when you request one programmatically, the system creates a session object to track that scene. The session contains a unique identifier and the configuration details of the scene. UIKit maintains the sessio...
2024-04-11
Mac M2芯片安装Picgo 打不开
Mac M2芯片安装PicGo 打不开背景Mac M2 芯片,PicGo安装后打开提示PicGo 已损坏,无法打开。 解决起初以为是打开的方式不对,因为有些新APP,从 LaunchPad 中打开会报错,从 Application/中打开一次就可以了;但是这个从Applicaiton中打开也报这个错; 然后以为是下载的版本不对,是不是下载的不是 arm64 芯片的,于是又专门去下载了一次。结果再次打开还是报这个错。 搜索了一下发现,解决方法如下: 在终端输入: 12345# sudo xattr -r -d com.apple.quarantine 你的APP路径sudo xattr -r -d com.apple.quarantine /Applications/PicGo.app Ps: 然后再备注一个 PicGo 设置 Github图床一直失败,可以看下分支是不是 main,PicGo默认是 master,所以分支也要改对。
2023-06-28
Xcode15 小组件兼容
背景 升级到 Xcode15 后,运行小组件,会出现WIDGET_BACKGROUND_API_ADOPTION_PROMPT的提示,如下图: 解决创建View_Extensions.swift,代码如下: 12345678910111213import SwiftUIextension View { @ViewBuilder func adoptableWidgetBackground(_ color: Color) -> some View { if #available(iOS 17.0, *) { containerBackground(for: .widget) { color } } else { background(color) } }} 然后在XXXLineProvider中,找到 ZZZ_WidgetEntryView: View,修改如下: 1...
2018-12-06
Swift代码中的嵌套命名法
Swift代码中的嵌套命名法Swift支持与其他类型嵌套命名,尽管它还没有专用的命名关键词。下面我们来看看,如何使用类型嵌套来优化我们代码的结构。 大多数Swift开发者习惯于用类型在结构上的实际名字累命名。例如:PostTextFormatterOption(一个Text Formatter类型的用于format Posts的Option)。这可能是因为我们在Objective-C & C中,养成的别无选择的可怕命名习惯,被我们带到了Swift里。 下面我们用上面提到的类型作为例子,来看下Post、PostTextFormatter以及PostTextFormatterOption的实现: 123456789101112131415161718192021222324252627struct Post { let id: Int let author: User let title: String let text: String}class PostTextFormatter { private le...
2025-09-28
使用一行命令实现OpenConnect连接内网
背景公司文档和接口需要使用VPN访问,而这个VPN软件每次打开都要输入密码,而且还需要动态码,太麻烦了,所以就想找一个简便的方法,最好是不需要设置,一开始想的是使用Surge配置,但是失败了。所以最后的成果就是命令行输入一个命令一键连接。 这个命令中,包含了密码、以及获取动态码和发起链接的过程,所以命令行输入后,什么也不需要操作了,下面来看看具体实现。 实现首先安装expect通过下面的命令安装expect,最终的命令是.expect的。Ps: Expect 本身不是一种文件格式,而是一种用于自动化交互的脚本语言和工具。它是一个Tcl (Tool Command Language) 脚本语言的扩展,主要用于自动化那些需要用户进行手动输入的交互式程序,例如SSH、FTP、passwd 等。Expect 脚本通过模拟人工操作,让程序在后台执行并自动处理响应,从而实现自动化。——来自Google,哈哈哈。 brew install expect 然后安装openconnect因为公司的VPN连接用的是OpenConnect,所以通过命令行安装openConnect,命令如下: br...
2024-03-13
Xcode 15.3 Archive失败
Xcode 15.3 Archive失败背景昨晚升级 Xcode 到 15.3,今天打包的时候发现 Archive 失败,提示:Call parameter type does not match function signature!,仔细看报错里是和HandyJSON相关的提示。 解决起初以为和 Pod 库有关系,但是找同事确认后,发现低于 Xcode 15.3 的版本是可以打包成功的,但是 Xcode 15.3 的版本就报错了。然后搜索HandyJSON Call parameter type does not match function signature!,发现了这个,Building HandyJSON in Swift 5.10 throws a fatal error ,是Swift 5.10 编译 HandyJSON报错了。目前HandyJSON官方还未解决。 暂时的解决方法是: 在 Pod 的 Target 中找到 HandyJSON, 然后设置Optimization Level为 None和No Optimization,如下图: 然后再次尝试 A...
公告
This is my Blog