是否有一种方法/软件可以提供执行用Swift编写的代码块所需的精确时间,除了以下内容?
let date_start = NSDate()
// Code to be executed
println("\(-date_start.timeIntervalSinceNow)")
Run Code Online (Sandbox Code Playgroud) 我想在Swift中创建一个函数接受任何数字(Int,Float,Double,...)
func myFunction <T : "What to put here"> (number : T) -> {
//...
}
Run Code Online (Sandbox Code Playgroud)
不使用NSNumber
我想检查数组的元素是否是Swift中UILabel的子类:
import UIKit
var u1 = UILabel()
u1.text="hello"
var u2 = UIView(frame: CGRectMake(0, 0, 200, 20))
var u3 = UITableView(frame: CGRectMake(0, 20, 200, 80))
var myArray = [u1, u2, u3]
var onlyUILabels = myArray.filter({"what to put here?"})
Run Code Online (Sandbox Code Playgroud)
没有桥接到目标c.
在UIViewController中,这段代码:
public override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
if let mainController = self.mainViewController{
return mainController.supportedInterfaceOrientations
}
return UIInterfaceOrientationMask.all
}
Run Code Online (Sandbox Code Playgroud)
给出了错误 Method doesn't override any method from its superclass
我使用的是Xcode 8 beta 4,iOS部署目标是9.0,并且Use Legacy Swift Language Version设置为NoBuild Settings
我怎么能将上面的代码转换为Swift 3?
在宣布我时我收到错误
var users = Array<Dictionary<String,Any>>()
users.append(["Name":"user1","Age":20])
var i:Int = Int(users[0]["Age"])
Run Code Online (Sandbox Code Playgroud)
如何获得int值?
给定此代码:
import SwiftUI
struct ContentView : View {
var body: some View {
VStack(alignment: .leading) {
Text("Title")
.font(.title)
Text("Content")
.lineLimit(nil)
.font(.body)
Spacer()
}
.background(Color.red)
}
}
#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
Run Code Online (Sandbox Code Playgroud)
导致这种交互:
VStack即使标签/文本组件不需要整个宽度,如何填充屏幕的宽度?
我发现的一个技巧是在结构中插入一个空 HStack,如下所示:
VStack(alignment: .leading) {
HStack {
Spacer()
}
Text("Title")
.font(.title)
Text("Content")
.lineLimit(nil)
.font(.body)
Spacer()
}
Run Code Online (Sandbox Code Playgroud)
产生所需的设计:
有没有更好的办法?
我试过两种方法:
label.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
label.adjustsFontForContentSizeCategory = true
Run Code Online (Sandbox Code Playgroud)
即使在"设置"中更改了首选文本大小,文本大小也会自动更改,即使在我返回应用程序之前,这也可以正常工作.但它只适用于系统字体(旧金山).
要使用自定义字体,我添加了一个扩展名UIFontDescriptor:
//from this answer http://stackoverflow.com/a/35467158/2907715
extension UIFontDescriptor {
private struct SubStruct {
static var preferredFontName: String = "Avenir-medium"
}
static let fontSizeTable : NSDictionary = [
UIFontTextStyle.headline: [
UIContentSizeCategory.accessibilityExtraExtraExtraLarge: 23,
UIContentSizeCategory.accessibilityExtraExtraLarge: 23,
UIContentSizeCategory.accessibilityExtraLarge: 23,
UIContentSizeCategory.accessibilityLarge: 23,
UIContentSizeCategory.accessibilityMedium: 23,
UIContentSizeCategory.extraExtraExtraLarge: 23,
UIContentSizeCategory.extraExtraLarge: 21,
UIContentSizeCategory.extraLarge: 19,
UIContentSizeCategory.large: 17,
UIContentSizeCategory.medium: 16,
UIContentSizeCategory.small: 15,
UIContentSizeCategory.extraSmall: 14
],
UIFontTextStyle.subheadline: [
UIContentSizeCategory.accessibilityExtraExtraExtraLarge: 21,
UIContentSizeCategory.accessibilityExtraExtraLarge: 21,
UIContentSizeCategory.accessibilityExtraLarge: 21,
UIContentSizeCategory.accessibilityLarge: 21,
UIContentSizeCategory.accessibilityMedium: 21, …Run Code Online (Sandbox Code Playgroud) swift中的函数采用Swift中的任何数字类型(Int,Double,Float,UInt等).该函数将数字转换为字符串
功能签名如下:
func swiftNumbers <T : NumericType> (number : T) -> String {
//body
}
Run Code Online (Sandbox Code Playgroud)
NumericType是一种自定义协议,已添加到Swift中的数字类型中.
在函数体内,该数字应转换为字符串:
我使用以下内容
var stringFromNumber = "\(number)"
Run Code Online (Sandbox Code Playgroud)
这不是那么优雅,PLUS:如果数字的绝对值严格低于0.0001则给出:
"\(0.000099)" //"9.9e-05"
Run Code Online (Sandbox Code Playgroud)
或者如果数字是一个大数字:
"\(999999999999999999.9999)" //"1e+18"
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个字符串插值限制?(不使用Objective-C)
PS:
NumberFormater 也不起作用
import Foundation
let number : NSNumber = 9_999_999_999_999_997
let formatter = NumberFormatter()
formatter.minimumFractionDigits = 20
formatter.minimumIntegerDigits = 20
formatter.minimumSignificantDigits = 40
formatter.string(from: number) // "9999999999999996.000000000000000000000000"
let stringFromNumber = String(format: "%20.20f", number) // "0.00000000000000000000"
Run Code Online (Sandbox Code Playgroud) 为什么lazy在这里使用?
extension SequenceType {
func mapSome<U>(transform: Generator.Element -> U?) -> [U] {
var result: [U] = []
for case let x? in lazy(self).map(transform) {
result.append(x)
}
return result
}
}
Run Code Online (Sandbox Code Playgroud)
此扩展使用返回可选的转换函数,并返回仅包含未转换为nil的值的数组
为什么不用self.map(transform)?这里有懒惰吗?
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
if userSignedInGlobal == "success"{
if let mainTabController = storyboard.instantiateViewController(withIdentifier: "MainTabController") as? MainTabController{
mainTabController.present(mainTabController, animated: true, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“应用程序试图在其自身上呈现模态视图控制器。呈现控制器是 .'
我需要在使用 firebase 对应用程序进行身份验证后导航到一个页面,以便在验证身份验证后使用上面的代码。我该如何解决这个问题,一个解释如何到达那里的参考链接或代码就足够了。