avatar
文章
194
标签
17
分类
0
首页
归档
标签
分类
关于
今是昨非的博客
首页
归档
标签
分类
关于

今是昨非的博客

SwiftUI中navigationDestination用法
发表于2024-08-17
背景最近做 SwiftUI 项目,之前对于 navigationDestination 的用法理解不太深刻,觉得很是难用,最近发现了正确的使用方式,这里记录一下。 场景假设有一个 TabView 类为 A,A 有 B、C 两个Tab,C 的 Tab 下子界面有 D,D 的子界面有 E。 即有 A -> B 和 A -> C -> D -> E 两条链路。 之前的用法是: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556struct A: View { var body: some View { NavigationStack { TabView(selection: $selectedTab) { B() C() } ...
FirebaseFunctionError 处理
发表于2024-08-17
背景做一个 Firebase 相关的项目,其中创建用户的时候,用的是Cloud Functions,调用的时候一直报错,错误信息只有”INTERNAL”。 Deploying Function Error on Cloud Function with error code 13 and Message “INTERNAL” 排查步骤网上搜索之后,有说字段不对应的,有说调用方式不对的,但是尝试后把这两个原因都排除了。 然后去 Firebase 的 Console 中查看,找到 Function,再找到调用的函数名字,点击右侧的竖三角,查看详细信息,发现里面错误信息为空。不要急,点击顶部 Tab,切换到 日志 下,然后从日志中查看报错信息,就能看到调用这个函数哪里报错了。具体步骤的截图如下:
Swift 面试题
发表于2024-07-31
背景被问到的面试题,这里记录一下。 问题Swift 中 Struct 和 Class 的区别Swift 中 为什么 String、Array、Dictionary 用 Struct 实现Swift 中写时复制的原理Swift 中变量作用域有哪些,区别是什么Swift中 Protocol 如何声明可空MVP 的优点是什么RxSwift 中冷信号和热信号的区别RxSwift 中 CombineLatest、zip、merge的区别Git 中 rebase和 merge 的区别,rebased的 commitID 会改变吗SwiftUI 中 View 传值方式有哪些什么情况下触发 layoutSubviews 答案Swift 中 Struct 和 Class 的区别Struct是值类型,Class 是引用类型;Struct和 Class 都可以有属性和方法,但是 let 修饰的 Struct 不能更改,Class 修饰的可以更改;Struct方法中修改属性需要在方法前添加 mutating 关键字。Struct和 Class 都可以实现协议。Struct不能被继承,Class 可以...
SafariFreeMedium插件
发表于2024-07-11
背景在阅读上篇 Flutter状态管理中,引用的几篇文章都需要是Medium 会员才能查看的。没有付费的每个月免费只能查看几次,所以就想有没有不付费查看这个的方法,就去搜索了一下。 实现搜索之后,找到了这篇Freedium · GitHub,查看后发现里面有个简单的方法,就是把 host 替换为````freedium.cfd然后重定向。 刚好自己有账号,为了在 Safari 中便于使用,就自己写了一个插件,效果如下: 参考 Freedium · GitHub
Flutter 状态管理
发表于2024-07-09
背景我之前对 Flutter 的状态管理一直比较头大,最近看到了一篇Flutter state management for minimalists | by Suragch | Medium文章,感觉文章真的很好,把为什么要进行状态管理以及什么是状态管理说的很通透,推荐大家看原文,这里是自己总结一下。 什么是状态管理老实说,之前看 Flutter 相关的文章和视频的时候,有些上来就推荐用 Bloc 的就很懵,没有前因后果,就告诉我要用这个东西,这东西用了有什么好处?这东西上手难度如何,这东西是必备的吗?和其他的状态管理库(比如GetX)对比有什么优点,等等之类的都不清楚,所以一直很难深入学习。 来看下图: 我本人是 iOS APP 开发,所以对于 MVVM 很熟悉,对比上图,UI Layer 是 View,Service Layer是 Model,所以 State Management Layer 就是 ViewModel,这样解释对比,我就对状态管理有了直观的理解,只是换了个名称,其实就是 ViewModel。 为什么要状态管理那为什么要状态管理呢?其实理解了上面,...
算法——两数之和、字母异位词分组、最长连续序列、移动零
发表于2024-06-20
算法——两数之和、字母异位词分组、最长连续序列、移动零的实现 两数之和 给指定的数,找到数组中两数之和为给定数的 index 思路: 使用字典 dict 存储,key 为数组中 index 对应的值, value 为 index。然后遍历数组, 如果 target - value在数组中存在,则返回target-value 对应的字典的 value 即 index和当前 value 对应的 index; 如果不存在,则把当前 value 和 index 存入数组中。 解法: 123456789101112131415161718192021/**index, value 遍历数组如果 target - value 在字典中,则返回字典中的index和当前index如果不存在,则存储当前值和 index,dict[value] = index*/func twoSum(_ nums: [Int], _ target: Int) -> [Int] { var dict = [Int: Int]() for (index, value) in nums.enu...
提醒描述文件有效期的 Mac APP 开发
发表于2024-06-18
背景之前有写过使用Python实现提醒iOS描述文件有效期,这篇文章介绍一下使用SwiftUI通过Mac APP实现提醒描述文件有效期。 实现原理是: 打开描述文件所在的文件夹,遍历读取文件内容,过滤掉后缀不为.mobileprovision的文件,然后读取文件内容(这里不需要再存储为其他格式,因为可以直接读取内容),从文件中读取指定的字段,然后根据ExpirationDate字段判断是否过期。 想要实现的功能: 不同有效期期显示不同颜色——已完成 筛选过期的、临近过期的、正常的描述文件——已完成 添加到期提醒到日历——已完成 筛选同一个 BundleID 重复的描述文件——未完成 一键删除所有过期的描述文件——已完成 代码放在了ScanProfileInfo,感兴趣的下载运行即可。 样式如下:
Safari 获取 Bing Rewards 插件
发表于2024-06-07
背景Bing Rewards 可以兑换天猫礼品卡、中国石化礼品卡、肯德基电子券、盒马礼品卡、苹果礼品卡等。level 1 的时候每天至多获取 30 积分,level 2 的可以电脑端 90积分、手机端60 积分。每天150 积分点着太累了,就想着有没有一键的便捷操作。 找到了一个通过 Chrome 插件Rewards-Search-Automator: Chrome / Edge extension for automatic Bing Search,来实现的,除去其中的 Mobile 不生效,外加搜索完成跳转开发者的网站,别的还好,可以自己下载代码,修改去掉跳转开发者网站的逻辑。 但是就是还有个问题,在 iPhone 上用不了,所以手机端的 60 积分还是不能一键获取,所以就想到了,借鉴这个做个 Safari 插件,然后就可以在iPhone上用了。 实现逻辑很简单,iPhone 使用 Bing 搜索,然后抓包出请求,然后提取出关键的form,再封装到 Safari Extension 中,当 popup 出来的时候,触发搜索。添加生成随机字符串的逻辑,每隔 6 秒,重新搜...
Safari 中简书登录框屏蔽
发表于2024-05-03
背景在[[借助腾讯混元助手屏蔽简书登录框]]中已经实现了Chrome 中屏蔽简书登陆框、右侧热门、左侧点赞、以及底部推荐。然后我用Userscripts 在 Safari 中使用了一下,发现登陆框并不能屏蔽掉,所以这里再补充下,如果在 Safari 中移除简书登陆框。 实现排查原因首先,回顾一下:在 Chrome 中是如何移除登录框的?通过移除class="__copy-button"的 div 后面新增 div 的来移除,即使用class="__copy-button"作为锚点来定位,但是在 Safari 中,查看源代码可以看到,并没有这个class="__copy-button"的 div,所以导致了移除失败。 这让我突然意识到,class="__copy-button"这个可能不是简书源代码中的东西,而是Tampermonkey中使用了某个脚本导致的,而在 Safari中,缺失了这个脚本,所以没有这个东西。验证如下: — | — 所以,选用class="__copy-button...
借助腾讯混元助手屏蔽简书登录框
发表于2024-04-24
背景查东西的时候,有些文章在简书,然后在浏览简书的时候,未登录时会弹出登录框,很烦人,所以想屏蔽掉。也想把右边的热门故事和底部的推荐关闭掉。说实话,我对《离婚后,妈宝男前夫后悔了》之类的是真的不感兴趣啊。。。所以就想通过 js 实现过滤掉这三部分。通过暴力猴,然后自己实现一个过滤脚本,具体步骤如下: 首先明确需求,要移除的共有三个部分, 未登录时的登陆框 右边的热门故事 底部的推荐 如下图所示: 然后一步步来看。 实现登陆框的移除查看网页源代码,对比登录框弹出前后,可以看出,当登陆框弹出时,body的style变为了overflow: hidden;;且尾部多了一个div。如下图: 所以如果想要去除登陆框,要做的就是在登陆框弹出时,移除尾部的div,并把body的style改为none。问题是,如何判断登陆框弹出时? 有两种方案,一种是监听滚动的位置,因为观察发现,登陆框是滚动到指定位置时才弹出的。还有一种是,换一个思路,监听 body 的 style,当body的style变为overflow: hidden;时,说明登陆框弹出了。 这里采用方法二,因为方法一太麻烦...
1234…20
avatar
今是昨非
技术分享、生活感悟
文章
194
标签
17
分类
0
Follow Me
公告
This is my Blog
最新文章
半天通过 AI 实现切换APP中广告 SDK2026-02-05
用 AI 实现了一个小需求2026-01-31
紧急救援中 AI 接管 119 的感受2026-01-31
Rules、Skills、Subagents、MCP 是什么2026-01-29
CodeBuddyCN 使用免费的七牛 Model 步骤2026-01-27
标签
标签2 技术 iOS books Algorithem 随笔 learning iOS自动打包 算法 movies 标签1 生活 分享 iOS蓝牙 Flutter ReactNative ideas
归档
  • 二月 2026 1
  • 一月 2026 8
  • 十月 2025 1
  • 九月 2025 4
  • 八月 2025 3
  • 十二月 2024 1
  • 十一月 2024 2
  • 八月 2024 2
网站信息
文章数目 :
194
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2026 By 今是昨非框架 Hexo 5.4.0|主题 Butterfly 5.5.3
日出江花红胜火,春来江水绿如蓝,能不忆江南