小编Nic*_*hrn的帖子

在Swift中通过字典迭代

关于Xcode在Swift编程语言指南中给我这个实验的答案,我有点困惑:

// Use a for-in to iterate through a dictionary (experiment)

let interestingNumbers = [
    "Prime": [2, 3, 5, 7, 11, 13],
    "Fibonacci": [1, 1, 2, 3, 5, 8],
    "Square": [1, 4, 9, 16, 25]
]
var largest = 0
for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
        }
    }
}
largest
Run Code Online (Sandbox Code Playgroud)

我理解,当字典被横向移动时,最大的数字被设置为变量,largest.但是,我很困惑为什么Xcode会说largest要设置5次,1次,或3次,具体取决于每个测试.

查看代码时,我发现它应该仅在"Prime"中设置6次(2,3,5,7,11,13).然后它应该跳过"Fibonacci"中的任何数字,因为它们都小于最大值,目前从"Prime"设置为13.然后,它应该设置为16,最后25"在"Square"中,总共产生8次.

我错过了一些完全明显的东西吗

dictionary swift

206
推荐指数
6
解决办法
17万
查看次数

多个NSEntityDescriptions声明NSManagedObject子类

我正在创建一个允许我使用Core Data的框架.在框架的测试目标中,我已经配置了一个名为的数据模型MockModel.xcdatamodeld.它包含一个名为MockManaged具有单个Date属性的实体.

所以我可以测试我的逻辑,我正在创建一个内存存储.当我想验证我的保存逻辑时,我创建了一个内存存储的实例并使用它.但是,我一直在控制台中获得以下输出:

2018-08-14 20:35:45.340157-0400 xctest[7529:822360] [error] warning: Multiple NSEntityDescriptions claim the NSManagedObject subclass 'LocalPersistenceTests.MockManaged' so +entity is unable to disambiguate.
CoreData: warning: Multiple NSEntityDescriptions claim the NSManagedObject subclass 'LocalPersistenceTests.MockManaged' so +entity is unable to disambiguate.
2018-08-14 20:35:45.340558-0400 xctest[7529:822360] [error] warning:     'MockManaged' (0x7f986861cae0) from NSManagedObjectModel (0x7f9868604090) claims 'LocalPersistenceTests.MockManaged'.
CoreData: warning:       'MockManaged' (0x7f986861cae0) from NSManagedObjectModel (0x7f9868604090) claims 'LocalPersistenceTests.MockManaged'.
2018-08-14 20:35:45.340667-0400 xctest[7529:822360] [error] warning:     'MockManaged' (0x7f986acc4d10) from NSManagedObjectModel (0x7f9868418ee0) claims 'LocalPersistenceTests.MockManaged'.
CoreData: warning:       'MockManaged' (0x7f986acc4d10) from …
Run Code Online (Sandbox Code Playgroud)

core-data nsmanagedobject nsmanagedobjectcontext

27
推荐指数
5
解决办法
7238
查看次数

试图理解异步操作子类

我试图开始Operation在侧面项目中使用s而不是在我的网络代码中散布基于闭包的回调以帮助消除嵌套调用.所以我正在做一些关于这个主题的阅读,我遇到了这个实现:

open class AsynchronousOperation: Operation {

    // MARK: - Properties

    private let stateQueue = DispatchQueue(label: "asynchronous.operation.state", attributes: .concurrent)

    private var rawState = OperationState.ready

    private dynamic var state: OperationState {
        get {
            return stateQueue.sync(execute: {
                rawState
            })
        }
        set {
            willChangeValue(forKey: "state")
            stateQueue.sync(flags: .barrier, execute: {
                rawState = newValue
            })
            didChangeValue(forKey: "state")
        }
    }

    public final override var isReady: Bool {
        return state == .ready && super.isReady
    }

    public final override var isExecuting: Bool {
        return state …
Run Code Online (Sandbox Code Playgroud)

nsoperation swift

20
推荐指数
2
解决办法
4319
查看次数

尝试将构建上载到iTunes Connect时出错

尝试将构建上传到iTunes Connect时出错.这是我第一次看到这个错误,我无法解决它.我曾尝试过其他帖子的建议,但这并没有证明是成功的.我尝试在Xcode中删除并重新添加我的帐户,让客户端将我的角色更改为Application Manager,手动管理签名,并尝试使用Application Loader,它返回相同的错误.

我有两个与我的帐户关联的团队; 我的个人团队和我的客户团队.我正在尝试上传我的客户端的应用程序,我已经做了很多次没有问题.但是,我刚刚开始收到以下错误:

应用程序上传错误的截图

我不明白为什么在过去几周内成功上传构建版本之后,此错误已经开始发生.

在最近几周成功上传后,Apple的结果是否发生了变化,导致我收到此错误?

xcode itunesconnect application-loader

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

SwiftUI 全屏 UIImagePickerController(相机)

UIImagePickerController通过在修改器内部提供逻辑来在我的应用程序中呈现 a sheet。简而言之,以下三种类型处理显示和消除UIImagePickerController类型内部的实例UIViewControllerRepresentable,其按预期工作:

struct DetailsView: View {

    enum Sheet: Hashable, Identifiable {
        case takePhoto

        var id: Int { hashValue }
    }

    @State private var activeSheet: Sheet?

    var body: some View {
        Text("Hello, World!")
            .sheet(item: $activeSheet) { (sheet) in self.view(for: sheet) }
    }

    private func view(for sheet: Sheet) -> some View {
        switch sheet {
        case .takePhoto: return PhotoSelectionView(showImagePicker: .init(get: { sheet == .takePhoto }, set: { (show) in self.activeSheet = show ? .takePhoto …
Run Code Online (Sandbox Code Playgroud)

uiimagepickercontroller swiftui

7
推荐指数
2
解决办法
4235
查看次数

当键盘出现时,表单中的 SwiftUI DatePicker 消失

我有一个 SwiftUI ,Form其中Section包含DatePicker. 默认情况下,它DatePicker设置为 a datePickerStyleof CompactDatePickerStyle(),因为它位于 a 中Form

包含日期选择器的表单的屏幕截图

点击 时DatePicker,将显示叠加层:

日期选择器覆盖的屏幕截图

DatePicker可以通过使用手势来修改 的时间,如以下视频所示:

通过手势修改日期选择器时间的视频

在下面的视频中,通过键盘点击叠加的DatePicker时间来修改它会导致叠加消失:

尝试通过键盘输入修改日期选择器时间的视频

我还尝试添加以下内容DatePicker以允许内联日期操作,希望避免使用键盘:

.datePickerStyle(GraphicalDatePickerStyle())
.ignoresSafeArea(.keyboard, edges: .bottom)
Run Code Online (Sandbox Code Playgroud)

然而,上述结果如下:

尝试通过键盘避免内联编辑日期的视频

我需要更改什么才能允许DatePicker通过表单内的手势和键盘输入进行操作?

swiftui swiftui-form swiftui-datepicker

6
推荐指数
1
解决办法
1366
查看次数

具有内存存储的核心数据堆栈的单元测试不断失败

我正在建立一个个人项目,让我和我的妻子监控我们的杂货消费习惯。该应用程序使用了 Core Data,我在进行单元测试时遇到了困难。我正在测试我的CoreDataStack类以确保它的方法正在保存和删除对象。

这是CoreDataStack

internal class CoreDataStack {

    // MARK: - Properties

    private let modelName: String

    internal lazy var storeContainer: NSPersistentContainer = {
        let container = NSPersistentContainer(name: self.modelName)
        container.loadPersistentStores { (storeDescription, error) in
            if let error = error as NSError? {
                fatalError("Unresolved error \(error), \(error.userInfo)")
            }
        }
        return container
    }()

    internal lazy var managedContext: NSManagedObjectContext = {
        return self.storeContainer.viewContext
    }()

    // MARK: - Initialization

    internal init(modelName: String = "Cart") {
        self.modelName = modelName
    }

    // MARK: …
Run Code Online (Sandbox Code Playgroud)

unit-testing core-data

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

在列表行中创建等宽的SwiftUI视图

我有一个List显示当前月份的天数。中的每一行都List包含缩写的天,a Divider和a中的天数VStack。在VStack随后被嵌入在HStack这样我就可以有更多的文本后的今天,数量的权利。

struct DayListItem : View {

    // MARK: - Properties

    let date: Date

    private let weekdayFormatter: DateFormatter = {
        let formatter = DateFormatter()
        formatter.dateFormat = "EEE"
        return formatter
    }()

    private let dayNumberFormatter: DateFormatter = {
        let formatter = DateFormatter()
        formatter.dateFormat = "d"
        return formatter
    }()

    var body: some View {
        HStack {
            VStack(alignment: .center) {
                Text(weekdayFormatter.string(from: date))
                    .font(.caption)
                    .foregroundColor(.secondary)
                Text(dayNumberFormatter.string(from: date))
                    .font(.body)
                    .foregroundColor(.red)
            }
            Divider()
        }
    }

} …
Run Code Online (Sandbox Code Playgroud)

swiftui

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

BDD和测试覆盖率

我已经开始使用Quick和Nimble为iOS编写我的第一个BDD测试,我对测试覆盖率有疑问.

我意识到在传统的单元测试中,开发人员的目标是获得100%的测试覆盖率.但是,我没有读过BDD的内容.如果我正确理解BDD,当我测试代码的行为时,那么实现的细节并不重要; 重要的是我从我的代码中得到了预期的结果,对吗?

我开始尝试获得100%的代码覆盖率,但似乎我开始编写脆弱的测试,因为我没有关注代码的结果,而是试图涵盖我的代码可以采用的所有路径.

  1. 我能正确理解BDD吗?
  2. 针对100%代码覆盖率的目标是否违背了BDD的目的?

bdd unit-testing

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

NSInMemoryStoreType 是否与 NSBatchDeleteRequest 不兼容?

我目前正在对一个与 Core Data 交互的层进行单元测试。它保存、删除和更新Item对象。但是,我的测试试图保存一些Items 然后执行批量删除的测试一直失败。

这是Item

extension Item {

    // MARK: - Properties

    @NSManaged public var date: NSDate

    @NSManaged public var isTaxable: Bool

    @NSManaged public var name: String

    @NSManaged public var price: NSDecimalNumber

    @NSManaged public var quantity: Double

    // MARK: - Fetch Requests

    @nonobjc public class func fetchRequest() -> NSFetchRequest<Item> { return NSFetchRequest<Item>(entityName: "Item") }

    // MARK: - Validation

    // Manual validation for `Decimal` values is needed. A radar is still open, which is …
Run Code Online (Sandbox Code Playgroud)

core-data nspersistentstore nsbatchdeleterequest

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