关于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次.
我错过了一些完全明显的东西吗
我正在创建一个允许我使用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) 我试图开始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) 尝试将构建上传到iTunes Connect时出错.这是我第一次看到这个错误,我无法解决它.我曾尝试过其他帖子的建议,但这并没有证明是成功的.我尝试在Xcode中删除并重新添加我的帐户,让客户端将我的角色更改为Application Manager,手动管理签名,并尝试使用Application Loader,它返回相同的错误.
我有两个与我的帐户关联的团队; 我的个人团队和我的客户团队.我正在尝试上传我的客户端的应用程序,我已经做了很多次没有问题.但是,我刚刚开始收到以下错误:
我不明白为什么在过去几周内成功上传构建版本之后,此错误已经开始发生.
在最近几周成功上传后,Apple的结果是否发生了变化,导致我收到此错误?
我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) 我有一个 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通过表单内的手势和键盘输入进行操作?
我正在建立一个个人项目,让我和我的妻子监控我们的杂货消费习惯。该应用程序使用了 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) 我有一个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) 我已经开始使用Quick和Nimble为iOS编写我的第一个BDD测试,我对测试覆盖率有疑问.
我意识到在传统的单元测试中,开发人员的目标是获得100%的测试覆盖率.但是,我没有读过BDD的内容.如果我正确理解BDD,当我测试代码的行为时,那么实现的细节并不重要; 重要的是我从我的代码中得到了预期的结果,对吗?
我开始尝试获得100%的代码覆盖率,但似乎我开始编写脆弱的测试,因为我没有关注代码的结果,而是试图涵盖我的代码可以采用的所有路径.
我目前正在对一个与 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 ×3
swiftui ×3
swift ×2
unit-testing ×2
bdd ×1
dictionary ×1
nsoperation ×1
swiftui-form ×1
xcode ×1