let content = UNMutableNotificationContent()
content.sound = .default
content.title = "Заголовок"
content.body = "Сообщение"
var dateComponents = DateComponents()
dateComponents.hour = 9
dateComponents.minute = 0
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
let request = UNNotificationRequest(identifier: UNNotificationRequest.weeklyAlKahID, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { error in
guard error == nil else {
print(error ?? "Error with donate")
return
}
}let content = UNMutableNotificationContent()
content.sound = .default
content.title = "Заголовок"
content.body = "Сообщение"
var dateComponents = DateComponents()
dateComponents.hour = 9
dateComponents.minute = 0
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
let request = UNNotificationRequest(identifier: UNNotificationRequest.weeklyAlKahID, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { error in
guard error == nil else {
print(error ?? "Error with donate")
return
}
}Хочется узнать как не бояться скачивать приложения/игры/фильмы и т.д с торрент-трекеров.Обратитесь к психотерапевту - именно они лечат различные фобии.
Какими способами проверять файлы?Способов много, как правило их проверяют с помощью хэширования - если хэш совпадает, значит файл не поврежден при передаче.
Какие из торрент-трекеров вы бы посоветовали и почему?Те на которых есть нужные вам файлы. Потому что использовать, те на которых нет нужных вам файлов смысла нет.
линукс это вообще тёмный лес
В связи с тем, что Microsoft зажрались подняли ценник на шинду Windows планируем перейти на Linux.В таком случае в ближайшем будущем вас ожидает увлекательный переход с линукса на зажравшуюся винду. Ибо линукс это дорого, очень дорого, если сравнивать с виндой.
Посоветуйте дистрибутив линукс (можно и от Васяна из 5Б), который внешне схож с виндовсВнешняя схожесть это последнее о чем стоит думать. Проблемы с другим интерфейсом есть, но не такие уж большие. Привыкнут к любому дистрибутиву одинаково.
и имеет костыли для запуска Win32 64-битных приложенийТакие костыли есть в любом дистрибутиве.
50% американцев устанавливают за месяц 0 приложений. Я сам из их числа.
{"id":67,"iconImage":"image\/catalog\/style\/modile\/icons-03.png" id имеет целочисленный тип, хотя во всех остальных местах это строка. 

struct EntryList: Decodable {
struct DynamicCodingKey: CodingKey {
var stringValue: String
init?(stringValue: String) { self.stringValue = stringValue }
var intValue: Int? { nil }
init?(intValue: Int) { nil }
}
struct Entry: Decodable {
struct Content: Decodable {
struct Subcategory: Decodable {
let id: String
let iconImage: String
let name: String
let sortOrder: String
let type: String
}
let iconImage: String
let iconImageActive: String
let image: String
let name: String
let sortOrder: String
let subcategories: [Subcategory]
}
let name: String
let content: Content
}
let entries: [Entry]
init(from decoder: Decoder) throws {
let entriesContainer = try decoder.container(keyedBy: DynamicCodingKey.self)
entries = try entriesContainer.allKeys.map { key in
print(key)
let content = try entriesContainer.decode(Entry.Content.self, forKey: key)
return Entry(name: key.stringValue, content: content)
}
}
}
var entryList: EntryList?
let task = URLSession
.shared
.dataTask(with: URL(string: "https://blackstarshop.ru/index.php?route=api/v1/categories")!) { (data, _, error) in
guard error == nil else { return }
guard let data = data else { return }
entryList = try! JSONDecoder().decode(EntryList.self, from: data)
}
task.resume()