- 1
- 2
- 3
- 4
/**
Константа
*/
private static let dateFormat = "dd.MM.yy_HH.mm.ss"
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
/**
Константа
*/
private static let dateFormat = "dd.MM.yy_HH.mm.ss"
Комментарий от бога.
0
open class Converter {
init() { }
func convert<T, U>(from: T) -> U {
return self.convert(from: T.self)
}
private func convert(from: MyClass1) -> MyClass2 {
return MyClass2(value: from.value)
}
private func convert(from: MyClass2) -> MyClass1 {
return MyClass1(value: from.value)
}
}
let converter = Converter()
let mC1 = MyClass1(value: 10)
let mC2 = MyClass2(value: 30)
let mc2_1: MyClass2 = converter.convert(from: mC1)
let mc1_1: MyClass1 = converter.convert(from: mC2)
So deep, too recursion
0
if let attrs = profile?.attrs {
let json = NSKeyedUnarchiver.unarchiveObject(with: attrs as Data) as? [String:AnyObject]
textField.text = String(format: "%@", (json?["number"] as? String)!)
}
Кто пишет на Swift – разделит всю боль поддержки такого кода.
0
func sumOf(_ numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
func average(numbers: Int...) -> Double {
var sum = sumOf(numbers)
return Double(sum) / Double(numbers.count)
}
// ERROR at line 10, col 21: cannot convert value of type '[Int]' to expected argument type 'Int'
// var sum = sumOf(numbers)
Смысл жёстко типизированных Variadic arguments ускользает от меня.
Предлагается как синтаксический сахар на замену [Type] (экономия на скобках?), не работает в неожиданных местах без объявления войны.
Зато Эппл убрала в третьем Свифте раскрытие кортежа в качестве аргументов функций: https://github.com/apple/swift-evolution/blob/master/proposals/0029-remove-implicit-tuple-splat.md
Здесь играем, здесь не играем, здесь рыбу заворачивали
0
self.output?.didFinishToLogin(response!)
let when = DispatchTime.now() + 0.5
DispatchQueue.main.asyncAfter(deadline: when) {
self.proceedWithSuccessLogin(response: response!)
}
Ждем пока в другом потоке что-то инициализируется, иначе ничего работать не будет. На вопрос автору, откуда взялось полсекунды, был ответ, что этого даже много - там мол все за микросекунды происходит.
0
В данном случае наговнокодили создатели свифта.
В Си был оператор for
for (var i = subviews.count - 2; i >= 0; i -= 1)
Но в Swift 3 его выпилили и вместо него изобрели богомерзкий stride:
for i in (subviews.count - 2).stride(through: 0, by: -1)
through - до какого значения должен дойти цикл, включительно. Если вместо него написать to, то будет не включительно. Интуитивно понятно, не так ли? (сарказм).
Ну и до кучи, в случае со stride нужно больше печатать.
Я уже молчу, что ++ и -- посчитали небезопасными и выпилили. Наверно, потому, что некоторые дауны путаются с префиксной и постфиксной версией. теперь надо писать += 1 и -= 1. Очень наглядно, по сравнению с ++ и --
0
______
|______|
_____ _ _____ __ __ _ ___
|_ _| | |_ _| \ \ / / | | / / |
| | | |__ | | \ V / _ _| | / /| |
| | | '_ \ | | / \| | | | | / / | |
| | | |_) || |_ / /^\ \ |_| | |/ / | |
\_/ |_.__/\___/ \/ \/\__, | /_/ | |
__/ | | | |
|___/|_| |_|
______
|______|
_____ _ _____ __ __ _ ___
|_ _| | |_ _| \ \ / / | | / / |
| | | |__ | | \ V / _ _| | / /| |
| | | '_ \ | | / \| | | | | / / | |
| | | |_) || |_ / /^\ \ |_| | |/ / | |
\_/ |_.__/\___/ \/ \/\__, | /_/ | |
__/ | | | |
|___/|_| |_|
0
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let rootViewController = LAMainViewController(nibName: nil, bundle: nil)
let navigationController = LANavigationController()
let gradientLayer = CAGradientLayer()
gradientLayer.colors = [UIColor.blackColor().CGColor, UIColor(hexString: "330033", alpha: 1)!.CGColor]
gradientLayer.locations = [0, 1]
gradientLayer.frame = window!.frame
navigationController.viewControllers = [rootViewController]
window!.rootViewController = navigationController
window!.makeKeyAndVisible()
window!.layer.insertSublayer(gradientLayer, atIndex: 0)
return true
}
давайте слой зафигачим на окно
0
var orderStatus: OrderStatus {
switch status {
case "исполнено":
return .Finished
case "Закрыт":
return .Finished
case "просрочено":
return .DeadlinePassed
default:
return .InProgress
if control.deadline.timeIntervalSinceNow < 0.0 {
return .DeadlinePassed
} else {
return .InProgress
}
}
}
Потрачено
0
func boundingRect(string: String?) {
...
let size = string.map { $0 as NSString }?.boundingRectWithSize(spec.maximumSize, options:options, attributes: attributes, context: nil).size ?? .zero
...
}
Пробую этот ваш