我有以下 GitHub Actions 配置文件(为简单起见,删除了部分内容)。
name: CI
on: push
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [8.x, 10.x, 12.x, 13.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: npm install
- run: npm test
Run Code Online (Sandbox Code Playgroud)
我遇到的主要问题是 Node.js 版本 8 的测试失败了。但其余的都成功了。在这种情况下,如果一项作业失败,GitHub Actions 往往会取消所有作业。
有没有一种方法可以改变这种行为,以便所有作业即使出现故障也将继续运行?这有助于查明特定版本的问题。
我正在尝试测试不同的Stripe Subscription失败.具体而言,当最初的卡被接受并且订阅处于活动状态时更新活动订阅时会发生什么,但续订付款被拒绝,或者客户在订阅期间删除了卡.
在Stripe上模拟这个的最佳方法是什么?
当我http://localhost:3000
在Safari中加载时,Safari会自动重定向到https://localhost:3000
.如何禁用此功能?
我进入~/Library/Cookies/HSTS.plist
并删除了该localhost
条目,然后重新启动了Safari,但它只是将其重新添加到该plist文件并重定向到https.
任何想法如何解决这个问题,以便localhost
我必须明确说出http或https?
我有以下代码.
import Foundation
let jsonData = """
[
{"firstname": "Tom", "lastname": "Smith", "age": "28"},
{"firstname": "Bob", "lastname": "Smith"}
]
""".data(using: .utf8)!
struct Person: Codable {
let firstName, lastName: String
let age: String?
enum CodingKeys : String, CodingKey {
case firstName = "firstname"
case lastName = "lastname"
case age
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
firstName = try values.decode(String.self, forKey: .firstName)
lastName = try values.decode(String.self, forKey: .lastName)
age = try values.decode(String.self, forKey: .age) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的 CI 工作流程从 CircleCI 转移到 GitHub Actions。我面临的最后一个主要问题是部署。
目前我的工作流程是这样的,当我将标签推送到我的 GitHub 存储库时,它将运行测试,然后运行部署。唯一的一点是CircleCI过滤如果标签的正则表达式匹配的标签,只运行作业:/v[0-9]+(\.[0-9]+)*/
。
在运行部署之前,如何检查以确保我推送的标签与上面的正则表达式模式匹配?
我目前有以下 GitHub 操作 yml 文件:
name: CI
on: [create]
jobs:
# ...
deploy:
runs-on: ubuntu-latest
if: github.event.ref_type == 'tag' && github.event.ref == SOMETHING HERE
steps:
- uses: actions/checkout@v1
# ...
Run Code Online (Sandbox Code Playgroud)
在if
块下,我需要改变github.event.ref == SOMETHING HERE
成为别的东西。我查看了 GitHub 操作文档页面的上下文和表达式语法。但是由于 GitHub Actions 的灵活和强大,似乎应该有一种方法或方式来做到这一点,或者至少是某种类型的解决方法。
如何确保标签 ( github.event.ref
) 与正则表达式模式 ( /v[0-9]+(\.[0-9]+)*/
)匹配?
所以我有一个返回JSON对象数组的API路由.例如:
[
{"firstname": "Tom", "lastname": "Smith", "age": 31},
{"firstname": "Bob", "lastname": "Smith", "age": 28}
]
Run Code Online (Sandbox Code Playgroud)
我试图想象如何在Swift中使用新的可编码特性将它们转换为类中的两个对象.因此,如果我有一个可编码的人类,我会想要采取这种反应并让它给我两个人物.
我也在使用Alamofire来处理这些请求.
我怎样才能做到这一点?到目前为止,我所看到的与可编码内容有关的所有内容只允许1个对象.我还没有看到任何与Alamofire或Web框架的集成.
在构建我的项目时,我收到了很多来自CocoaPods Pods的警告.所以我无法控制的其他项目.
建议的方法是什么?我更喜欢Xcode只显示与我的项目相关的警告.如果它显示与我无法控制的项目相关的警告,那就太多了.
我在Xcode 11中有一个项目,向其中添加了Swift Package Manager依赖项。现在,我意识到我不再需要以前添加到项目中的程序包依赖项之一。
正如您在下面看到的那样,File > Swift Packages
该项目下没有任何选项可从Swift Package Manager删除打包程序。
我试图从project.xcworkspace/xcshareddata/swiftpm/Package.resolved
文件中的数组中删除包。但是它仍然没有将其从Xcode中删除,并且下次我将Updaate to Latest Package Versions
其读取到Package.resolved
文件中时。
如何在项目中删除Swift Package Manager依赖项?
(这是此问题的后续跟进:使用具有多个键的可解码协议.)
我有以下Swift代码:
let additionalInfo = try values.nestedContainer(keyedBy: UserInfoKeys.self, forKey: .age)
age = try additionalInfo.decodeIfPresent(Int.self, forKey: .realage)
Run Code Online (Sandbox Code Playgroud)
我知道如果我使用decodeIfPresent
并且没有该属性,如果它是一个可选变量,它仍将正确处理它.
例如,以下JSON使用上面的代码解析它.
{
"firstname": "Test",
"lastname": "User",
"age": {"realage": 29}
}
Run Code Online (Sandbox Code Playgroud)
以下JSON也适用.
{
"firstname": "Test",
"lastname": "User",
"age": {"notrealage": 30}
}
Run Code Online (Sandbox Code Playgroud)
但以下不起作用.
{
"firstname": "Test",
"lastname": "User"
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能使所有3个例子都有效?是否有类似的东西decodeIfPresent
了nestedContainer
?
我的应用程序的iOS Share Extension出了问题.我在共享扩展中有以下代码Info.plist
.
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
</dict>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
</dict>
Run Code Online (Sandbox Code Playgroud)
主要问题是Google Chrome,NYTimes,WSJ和许多其他应用中都没有显示扩展程序.所有这些都应该提供Web页面或Web URL.
我在某处读到了我必须将以下内容添加到NSExtensionActivationRule dict中.
<key>NSExtensionActivationSupportsText</key>
<true/>
Run Code Online (Sandbox Code Playgroud)
如果我添加,则共享扩展名会出现在上面列出的应用中,但只会将字符串返回到我的扩展程序.例如,如果我进入apple.com
谷歌浏览器并使用我的共享扩展程序,它只是Apple
作为我的扩展程序提供的字符串,我的应用程序并不真正支持.它应该提供某种类型的URL或类似的东西.在NYTimes应用程序中,它只会将文章的标题发送到扩展名.
扩展在Safari中完美运行.只是不确定第三方应用程序.
以下是在我的扩展程序的swift文件中接收URL的主要代码.
if let item = extensionContext?.inputItems.first as? NSExtensionItem {
if let itemProvider = item.attachments?.first as? NSItemProvider {
if itemProvider.hasItemConformingToTypeIdentifier("public.url") {
itemProvider.loadItem(forTypeIdentifier: "public.url", options: nil, completionHandler: { (url, error) -> Void in
if let shareURL = url as? NSURL {
print (shareURL.absoluteString!)
Run Code Online (Sandbox Code Playgroud)
从那里我处理URL作为我的应用程序应该.
当我加入了NSExtensionActivationSupportsText
选项我改变了上面的代码略有 …