我想使用Apples可视化格式语言将视图约束到iOS 11中的新安全区域布局指南.但是,我得到一个例外:
- [NSLayoutYAxisAnchor nsli_superitem]:无法识别的选择器发送到实例0x1c447ed40
//Make View Dictionary
var views: [String: Any] = ["left": self.leftContainer]
//Check swift version and add appropriate piece to the view dictionary
if #available(iOS 11, *) {
views["topGuide"] = self.view.safeAreaLayoutGuide.topAnchor
}else{
views["topGuide"] = self.topLayoutGuide
}
//Make the constraint using visual format language
let leftVertical = NSLayoutConstraint.constraints(withVisualFormat: "V:[topGuide][left]|", options: [], metrics: nil, views: views)
//Add the new constraint
self.view.addConstraints(vertical)
Run Code Online (Sandbox Code Playgroud)
我喜欢可视化格式语言的原因是因为在某些情况下你可以用更少的代码添加很多约束.
有任何想法吗?
autolayout visual-format-language swift ios11 safearealayoutguide
我有一个新的应用程序,我正在使用 SwiftUI 构建跨平台
\n当我构建发布版本时,我在 Xcode 生成的弹出窗口中收到一个非常奇怪的错误。
\nUnable To Install \xe2\x80\x9a\xc3\x84\xc3\xbanomadgo.ProductivityDashboard\xe2\x80\x9a\xc3\x84\xc3\xb9\n\nPlease try again later.\nFailed to finalize LSBundleWrapper mutator instance for\nRun Code Online (Sandbox Code Playgroud)\n\n我只在为发布而构建的情况下收到此错误。我尝试重新启动我的 Macbook。
\n眼镜:
\nXcode 版本 12.5.1 (12E507)\nMacBook Air (M1, 2020) BigSur
\n该应用程序是新项目,使用跨平台 SwiftUI 的所有最新 Xcode 设置。
\n\n我正在尝试ARKit,我设置了一个ARSCNView使用本教程.
我创建了一个单独的视图应用程序,然后将一个ARSCNView刷新约束到根视图,并为我的插座ViewController.
这是以下代码ViewController:
import UIKit
import ARKit
class ViewController: UIViewController {
//MARK: Properties
@IBOutlet weak var arScene: ARSCNView!
//MARK: ARKit variables
var realityConfiguration: ARWorldTrackingSessionConfiguration?
//MARK: Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.prepare()
}
//MARK: Actions
//MARK: Overrides
}
extension ViewController {
func prepare() {
//Check to see if active reality is supported
guard ARSessionConfiguration.isSupported else {
//Custom alert …Run Code Online (Sandbox Code Playgroud) 据我所知,你不能注册一个Realm .observe对象或集合上块,如果Realm是写事务.
如果主线程上发生了所有事情,这将更容易管理,但我经常遇到此异常,因为我更喜欢将我的JSON解析移交给后台线程.这非常有用,因为我不必陷入主线程并且使用Realm漂亮的通知系统,如果我已经注册以监听这些更改,我可以收到所有修改的通知.
现在,如果我要添加一个观察块,我会检查以确保我Realm不在这样的写入事务中:
guard let realm = try? Realm(), !realm.isInWriteTransaction else {
return
}
self.myToken = myRealmObject.observe({ [weak self] (change) in
//Do what ever
}
Run Code Online (Sandbox Code Playgroud)
这成功地防止了这种异常.但是,除非我有点创意,否则我永远不会有机会重新注册此令牌.
Realm团队是否有关于更好模式的代码示例/建议以避免此异常?我没有成功注册令牌的任何技巧?
在 iOS 15 上的 SwiftUI 中使用新.searchable()修饰符时,我无法自定义搜索栏外观。具体来说,我不希望它与我用于导航栏的颜色看起来很好。
我尝试.appearance() 像这样改变。
UISearchBar.appearance().backgroundColor = UIColor.white
UISearchBar.appearance().tintColor = UIColor.white
UISearchBar.appearance().barTintColor = UIColor.white
Run Code Online (Sandbox Code Playgroud)
但只设法得到了这个。
尽管这种方式很成功,但间距看起来并不好。我宁愿把它染成白色。
我SwiftUI在一个公共库中有一个结构体,我寄给自己。
public struct NTextField: View {
public var body: some View {
Text("Hello, World!")
}
public init() {
}
}
struct NTextField_Previews: PreviewProvider {
static var previews: some View {
NTextField()
}
}
Run Code Online (Sandbox Code Playgroud)
我点击文件,WYSIWYG 预览无法加载
单击“诊断”时,我看到如下内容:
Error Domain=com.apple.dt.UITestingAgent Code=-1 "failed to load library at path "/Users/<my_app_name>/Library/Developer/Xcode/DerivedData/<my_app_name>/Build/Intermediates.noindex/Previews/<my_app_name>/Products/Debug-iphonesimulator/<my_custom_pod>/<my_custom_pod>.framework/<my_custom_pod>": Library not loaded:
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我删除了派生数据,清理和构建。
这是一个简单的“下载”类来说明我想要做什么。
class Download {
public var progress: CurrentValueSubject<Double, Never> = CurrentValueSubject<Double, Never>(0)
var subscriptions: Set<AnyCancellable> = []
func start(task: URLSessionTask) {
task.resume()
task.progress.publisher(for: \.fractionCompleted).sink { [weak self] (newProgress) in
self?.progress.send(newProgress)
}.store(in: &subscriptions)
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够将进度属性观察者发布者“重新发布”到我当前的值主题。如您所见,我当前使用该.sink函数进行订阅,然后CurrentValueSubject直接调用发布者。
我希望能够使用类似.assign(to:, on:)这样的运算符。
task.progress.publisher(for: \.fractionCompleted).assign(to: \.progress, on: self)
Run Code Online (Sandbox Code Playgroud)
然而,这不起作用,.assign(to:)似乎保留用于在 SwiftUI@Published属性上“重新发布”的操作符也不起作用。为什么Combine在这里名不副实?
我知道 Apple 整合了一些服务,现在将这种整合称为Apple 商务管理。还有苹果企业计划。
您是否需要成为企业计划的一部分才能成为商业计划的一部分?为什么我会选择一个而不是另一个?
我正在尝试测试我的应用程序如何响应不同的 AVFoundation 配置。我正在使用 WWDC 视频“可测试性工程”中描述的技术。
我创建了一个协议来表示我的应用程序使用的各个部分AVCaptureDevice。
public protocol AVCaptureDeviceProperties: class {
//MARK: Properties I use and need to test
var position: AVCaptureDevice.Position { get }
var focusMode: AVCaptureDevice.FocusMode { get set }
var exposureMode: AVCaptureDevice.ExposureMode { get set }
var whiteBalanceMode: AVCaptureDevice.WhiteBalanceMode { get set }
//MARK: Functions I use use and need to test
func lockForConfiguration() throws
func unlockForConfiguration()
func isFocusModeSupported(_ focusMode: AVCaptureDevice.FocusMode) -> Bool
func isExposureModeSupported(_ exposureMode: AVCaptureDevice.ExposureMode) -> Bool
func isWhiteBalanceModeSupported(_ whiteBalanceMode: AVCaptureDevice.WhiteBalanceMode) …Run Code Online (Sandbox Code Playgroud) 我正在寻找有关我在 PostgreSQL 表设计中经常遇到的模式的指导。我想知道我的想法是否错误,或者这是否是关系数据库的限制。
我有一张这样的桌子
CREATE TABLE feature
(
id serial PRIMARY KEY,
name text NOT NULL,
type text NOT NULL,
);
CREATE TABLE feature_type
(
value text PRIMARY KEY,
comment text
);
ALTER TABLE feature ADD CONSTRAINT
feature_type_fkey FOREIGN KEY (type) REFERENCES feature_type;
INSERT INTO feature_type (value, comment) VALUES
('OBJECT_TRACKING', 'Tracks a basic object.'),
('3D_OBJECT_TRACKING', 'Will track a 3D object'),
('TRIANGLE_TRACKING', 'Track a rectangular object');
Run Code Online (Sandbox Code Playgroud)
现在我的feature表基本上有了可执行的类型。我的问题是,现在我想要任何给定功能类型的“设置”。以下是我目前实现此目标的方法。
CREATE TABLE object_tracking_settings (
id serial PRIMARY KEY,
tracking_radius INT NOT NULL, …Run Code Online (Sandbox Code Playgroud) 我想在 SwiftUI 中有一个可选的 @ObservedObject 但我一直收到编译时错误。
Property type 'AModel?' does not match that of the 'wrappedValue' property of its wrapper type 'ObservedObject'
Run Code Online (Sandbox Code Playgroud)
这是一些最小的可重现代码。
import SwiftUI
public struct AView: View {
//MARK: View Model
//Error thrown here.
@ObservedObject var model: AModel?
//MARK: Body
public var body: some View {
Text("\(model?.value ?? 0)")
}
//MARK: Init
public init() {
}
}
class AModel: ObservableObject {
let value: Int = 0
}
Run Code Online (Sandbox Code Playgroud) 我正在查看一些 Apple Combine 源代码,并看到一个 Publisher 名称MergeMany及其定义如下的 init 方法:
public init(_ upstream: Upstream...)
Run Code Online (Sandbox Code Playgroud)
...后面的三个点是什么Upstream?的值Upstream只是结构定义中定义的另一个发布者。
public struct MergeMany<Upstream> : Publisher where Upstream : Publisher {
Run Code Online (Sandbox Code Playgroud) 我正在努力寻找一种干净的方法来预览 SwiftUI 视图,这些视图具有一个视图模型,该视图模型的某些状态可以在视图的生命周期中发生变化。这是一些稍微做作的代码来说明我使用的模式。
import SwiftUI
enum NetworkState {
case idle
case loading
case hasData
case error
}
public class MyViewModel: ObservableObject {
@Published var results: [String] = []
@Published var state: NetworkState = NetworkState.idle
func load() {
self.results = ["One", "Two", "Three"]
self.state = .hasData
}
}
public struct MyView: View {
//MARK: View Model
@ObservedObject var viewModel: MyViewModel
//MARK: Body
public var body: some View {
switch self.viewModel.state {
case NetworkState.idle:
Text("Tap to load").onTapGesture {
self.viewModel.load()
}
case NetworkState.loading: …Run Code Online (Sandbox Code Playgroud)