我正在尝试使用正则表达式将字符串分成两部分.字符串格式如下:
text to extract<number>
Run Code Online (Sandbox Code Playgroud)
我一直在使用(.*?)<,<(.*?)>哪个工作正常,但在阅读了一点regex之后,我才开始想知道为什么我需要?表达式中的.我通过这个网站找到它们之后才这样做,所以我不确定它们之间的区别.
我正在尝试从 catch 块记录错误。文件说明如下:
要格式化日志消息,请使用标准 NSString 或 printf 格式字符串
除了标准格式字符串说明符(例如 %@ 和 %d)之外,日志记录系统还通过以 %{value_type}d 格式内联表示值类型来支持值的自定义解码。此外,说明符 %.*P 可用于解码任意二进制数据。该系统包括许多内置的值类型解码器,如表 3 所示。
errno %{errno}d 管道破裂
当我这样做时,我收到一个错误:
import os.log
do {
try throwError()
} catch {
os_log("Error: %{errno}d", log: .default, type: .error, error)
}
Run Code Online (Sandbox Code Playgroud)
但是编译器输出错误:
参数类型“错误”不符合预期类型“CVarArg”
有没有比error.localizedDescription作为参数传递更好的方法?
在包含其应用程序和应用程序扩展的公共代码的iOS或OS X Framework中,有没有办法检测代码是在主应用程序或其扩展程序之一下运行?具体来说,我想检测框架是否被用作WatchKit扩展的一部分而不是App的iPhone部分.
UIDevice.currentDevice总是返回iPhone,就像运行代码一样.我相信我可以检查是否WKInterfaceDevice存在,但这似乎并不太优雅.
我有以下结构.前3个属性从JSON解码,第4个属性用作缓存,如果图像被下载.
import UIKit
struct Thumbnail: Codable {
let url: String
let width: UInt
let height: UInt
var image: UIImage?
enum CodingKeys: String, CodingKey {
case url
case width
case height
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译Xcode时告诉我Thumbnail不符合Decodable协议.我知道UIImage不符合Codable,但据我所知,使用CodingKeys枚举应该忽略image协议?任何建议将不胜感激:)
我正在尝试在Metal中编写片段着色器,但无法理解如何传递单个值(例如float,float4或half4).我的着色器如下:
#include <metal_stdlib>
using namespace metal;
typedef struct {
float4 renderedCoordinate [[position]];
} FullscreenQuadVertex;
vertex FullscreenQuadVertex fullscreenQuad(unsigned int vertex_id [[ vertex_id ]]) {
float4x4 renderedCoordinates = float4x4(float4( -1.0, -1.0, 0.0, 1.0 ),
float4( 1.0, -1.0, 0.0, 1.0 ),
float4( -1.0, 1.0, 0.0, 1.0 ),
float4( 1.0, 1.0, 0.0, 1.0 ));
FullscreenQuadVertex outVertex;
outVertex.renderedCoordinate = renderedCoordinates[vertex_id];
return outVertex;
}
fragment float4 displayColor(device float4 *color [[ buffer(0) ]]) {
// return float4(0.2, 0.5, 0.8, 1);
return *color;
}
Run Code Online (Sandbox Code Playgroud)
我正在从MTKView子类传递颜色,如下所示:
import MetalKit
class …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个 GitHub 操作,该操作在发布版本时触发,并将构建我的项目并上传某些工件作为发布资产。我能找到的唯一示例依赖于使用该create-release操作,该操作失败,因为版本已经创建。我的工作流程文件是这样的:
name: Build for Release
on:
release:
types: [published]
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Build
run: ...
- name: Zip Asset
run: ...
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ ???? What Goes Here ???? }}
asset_path: build/MyProject.zip
asset_name: MyProject.zip
asset_content_type: application/zip
Run Code Online (Sandbox Code Playgroud)
我的标签将是v0.1.0、v0.1.1等v0.2.0,并且发布名称与这些标签相匹配。
当使用 SwiftUI 列表时,我有代码来更新所选对象,效果很好。但是,在所选对象发生更改之前,对所选对象的更改不会反映在列表中。
这是我的列表显示的类的简化版本。
class Item: ObservableObject {
let id = UUID()
@Published var name: String
init(name: String) {
self.name = name
}
}
extension Item: Hashable {
static func == (lhs: Item, rhs: Item) -> Bool {
lhs.id == rhs.id
}
func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的观点的简化版本。
struct TestView: View {
@State var items = [
Item(name: "Item 1"),
Item(name: "Item 2"),
Item(name: "Item 3"),
Item(name: "Item 4")
]
@State var selectedItem: Item?
var body: …Run Code Online (Sandbox Code Playgroud) swift ×4
ios ×3
codable ×1
frameworks ×1
github ×1
iphone ×1
logging ×1
macos ×1
metal ×1
objective-c ×1
regex ×1
regex-greedy ×1
swiftui ×1
swiftui-list ×1
watchkit ×1