小编Jon*_*gel的帖子

Swift安全区域布局指南和可视格式语言

我想使用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

21
推荐指数
3
解决办法
8424
查看次数

SwiftUI 应用程序构建上“无法最终确定 LSBundleWrapper”以供发布

我有一个新的应用程序,我正在使用 SwiftUI 构建跨平台

\n

当我构建发布版本时,我在 Xcode 生成的弹出窗口中收到一个非常奇怪的错误。

\n
Unable 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\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

我只在为发布而构建的情况下收到此错误。我尝试重新启动我的 Macbook。

\n

眼镜:

\n

Xcode 版本 12.5.1 (12E507)\nMacBook Air (M1, 2020) BigSur

\n

该应用程序是新项目,使用跨平台 SwiftUI 的所有最新 Xcode 设置。

\n

我尝试在 MacBook 上运行该应用程序时收到错误消息。在此输入图像描述

\n

macos ios swiftui apple-m1

14
推荐指数
1
解决办法
3299
查看次数

使用ARKit显示DAE文件并跟踪场景中的锚点

我正在尝试ARKit,我设置了一个ARSCNView使用本教程.

然后使用本教程的第二部分设置跟踪水平3D平面.

我创建了一个单独的视图应用程序,然后将一个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)

augmented-reality ios swift iphone-6 arkit

12
推荐指数
1
解决办法
8128
查看次数

在写入事务中注册领域通知

据我所知,你不能注册一个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团队是否有关于更好模式的代码示例/建议以避免此异常?我没有成功注册令牌的任何技巧?

realm swift

8
推荐指数
1
解决办法
943
查看次数

自定义“可搜索”搜索字段 SwiftUI iOS 15

在 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)

但只设法得到了这个。

在此输入图像描述

尽管这种方式很成功,但间距看起来并不好。我宁愿把它染成白色。

search uisearchbar swift swiftui

8
推荐指数
1
解决办法
6590
查看次数

无法从 Cocoapods 渲染 SwiftUI 预览

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)

有任何想法吗?我删除了派生数据,清理和构建。

也在cocoapods git hub issue tracker 上找到了这个

ios cocoapods swift swiftui

7
推荐指数
1
解决办法
928
查看次数

合并分配(to: on:)另一个发布者

这是一个简单的“下载”类来说明我想要做什么。

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在这里名不副实?

ios swift combine

7
推荐指数
1
解决办法
9726
查看次数

Apple Enterprise Program 和 Business Manager 之间的区别?

我知道 Apple 整合了一些服务,现在将这种整合称为Apple 商务管理。还有苹果企业计划

您是否需要成为企业计划的一部分才能成为商业计划的一部分?为什么我会选择一个而不是另一个?

ios

6
推荐指数
2
解决办法
4674
查看次数

模拟 AVCaptureDeviceInput 用于测试

我正在尝试测试我的应用程序如何响应不同的 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)

testing automated-tests protocols mocking swift

5
推荐指数
0
解决办法
1119
查看次数

PostgreSQL 中的多态表

我正在寻找有关我在 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)

sql postgresql polymorphism

5
推荐指数
2
解决办法
7116
查看次数

SwiftUI 中的可选 @ObservableObject

我想在 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)

ios swift swiftui property-wrapper

4
推荐指数
1
解决办法
818
查看次数

Swift init 方法中的三个点

我正在查看一些 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)

init swift combine

3
推荐指数
1
解决办法
3236
查看次数

更改 SwiftUI PreviewProvider 中的模型视图状态

我正在努力寻找一种干净的方法来预览 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)

ios swift swiftui

3
推荐指数
1
解决办法
1801
查看次数