- 1
- 2
- 3
- 4
if let attrs = profile?.attrs {
let json = NSKeyedUnarchiver.unarchiveObject(with: attrs as Data) as? [String:AnyObject]
textField.text = String(format: "%@", (json?["number"] as? String)!)
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
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
...
}
Пробую этот ваш
0
if section == 0 {
return "Item(s) in your cart"
} else if section == 1 {
return String("Total tax")
} else if section == 2{
return String("Shipped to")
} else if section == 3 {
return String("Please select a payment method")
}
return nil
Ладно, допустим человек не знает, что такое switch или хранение данных в массиве.
Но зачем явно вызывать конструктор строки? Что, кто-то не поймёт, что это строка?
0
import Foundation
class UserAddress {
private var ID = Int32()
private var stateID = Int32()
private var eavObjectID = Int32()
private var firstName = String()
private var lastName = String()
private var companyName = String()
private var address = String()
private var address2 = String()
private var city = String()
private var stateName = String()
private var postalCode = String()
private var countryID = String()
private var phone = String()
func setID(ID: Int32) { self.ID = ID }
func setStateID(stateID: Int32) { self.stateID = stateID }
func setEavObject(eavObjectID: Int32) { self.eavObjectID = eavObjectID }
func setFirstName(firstName: String) { self.firstName = firstName }
func setLastName(lastName: String) { self.lastName = lastName }
func setCompanyName(companyName: String) { self.companyName = companyName }
func setAddress(address: String) { self.address = address }
func setAddressTwo(address2: String) { self.address2 = address2 }
func setCity(city: String) { self.city = city }
func setStateName(stateName: String) { self.stateName = stateName }
func setPostalCode(postalCode: String) { self.postalCode = postalCode }
func setCountryID(countryID: String) { self.countryID = countryID }
func setPhone(phone: String) { self.phone = phone }
func getID() -> Int32 { return self.ID }
func getStateID() -> Int32 { return self.stateID }
func getEavObject() -> Int32 { return self.eavObjectID }
func getFirstName() -> String { return self.firstName }
func getLastName() -> String { return self.lastName }
func getCompanyName() -> String { return self.companyName }
func getAddres() -> String { return self.address }
func getAddressTwo() -> String { return self.address2 }
func getCity() -> String { return self.city }
func getStateName() -> String { return self.stateName }
func getPostalCode() -> String { return self.postalCode }
func getCountryID() -> String { return self.countryID }
func getPhone() -> String { return self.phone }
}
Java головного мозга. Писал android девелопер