
L
14.08.2018
11:37:47
Can anyone help me?

Ruslan
14.08.2018
11:54:14
Или просто выделываешся?)

Nurkhan
14.08.2018
11:59:51

Google

Ruslan
14.08.2018
12:02:33
ты создал новую лейбу
и не добавил её на экран
или используй оутлет

Nurkhan
14.08.2018
12:03:33
@IBOutlet weak var label: MTMathUILabel!
так надо добавить?

Ruslan
14.08.2018
12:04:23
твоя проблема в том что у тебя есть оутлет, но в дидлоад ты создаёшь новую лейбу с таким же названием
и ты формулу не в лейбу со сториборда сетишь, а просто в созданую лейбу которой нету на экране
убери *let label1:MTMathUILabel = MTMathUILabel()* с кода
только не забудь привязать к оутлету лейбу со сториборда


Алексей
14.08.2018
12:21:18
Всем привет. Вопрос есть по ObjectMapper. Делаю мапинг json ответа с сервера. Мне нужно чтобы в поле item в итоге находился массив объектов ItemFileModel.
Сейчас модель, в которую хочу смапить выглядит так:
struct ListFileModel {
var type: String?
var item: [ItemFileModel]?
}
extension ListFileModel: Mappable {
init?(map: Map) {
mapping(map: map)
}
mutating func mapping(map: Map) {
type <- map["xmltype"]
item <- map["item"]
}
Json, который я пытаюсь распарсить, примерно выглядит так:
… "listfile": {
"xml_attr_type": "ns2:IListFile",
"item": [
{
"xml_attr_type": "ns2:IItemFile",
"xml_attr_id": "43a87d70-50f3-11e7-f706-3cd92b05fcb8»,
"filetype": "pdf"
}
}
]}
…
Проблема в маппинге поле с ключем item. Либо в итоге поле имеет значение nil, либо в нем находится массив объектов ListFileModel вместо ItemFileModel.
я пробовал примерно следующие варианты:
1) item <- map["item"]
2) item = Mapper<ItemFileModel>().mapArray(JSONArray: [map["item"].JSON]) //тут список создается, только в качестве элемента идет модель ListFileModel почему-то
3) item = Mapper<ItemFileModel>().mapArray(JSONArray: [try map.value("item") ])
4) item = Mapper<ItemFileModel>().mapArray(JSONArray: [map["item"].currentValue as! Dictionary])
5) item <- map["item"].value()
во всех вариантах кроме второго nil в итге в поле item
но ничего не выходит. Куча статей вижу, где написано, что можно просто <- map["item"] делать для маппинга вложенного списка. Но не выходит.
Энибади хелп?


Ruslan
14.08.2018
12:26:00
почему не codable?
у меня с кодабл таких трабл не было
спокойно списки парсятся

Google

Aleksandr
14.08.2018
12:28:11
Начни с того что тип вместо массива поставь на нужный
var item: [ItemFileModel]?

Denys
14.08.2018
12:28:44
Трансформ юзай, там есть пример в гите

Алексей
14.08.2018
12:30:58

Aleksandr
14.08.2018
12:32:02
так это и есть нужный
> либо в нем находится массив объектов ListFileModel вместо ItemFileModel
Так тебе массив нужен или нет?
var item: [ItemFileModel] - это массив, вот и получается масссив

Алексей
14.08.2018
12:33:07
у меня в переменной item в итоге nil. не получается массив

Nurkhan
14.08.2018
12:33:27

Алексей
14.08.2018
12:33:50
ItemFileModel тоже Mappable?

Алексей
14.08.2018
12:34:26
ItemFileModel тоже Mappable?
да
struct ItemFileModel {
var xmlAttrType: String?
}
extension ItemFileModel: Mappable {
init?(map: Map) {
mapping(map: map)
}
mutating func mapping(map: Map) {
xmlAttrType <- map["xml_attr_type»]
}
}
(убрал лишние поля для читаемости)

Aleksandr
14.08.2018
12:34:52
и item и соседнее поле лежат под ключем "listfile":
надо сначала из "listfile" достать

Алексей
14.08.2018
12:36:36

Алексей
14.08.2018
12:36:52
если у тебя весь ответ от сервера к примеру - json as? [String: Any] то
Mapper<ListFileModel>().mapArray(JSONObject: json["listfile"] ) и все работает

Алексей
14.08.2018
12:36:55
то есть type в ListFileModel заполняется нужным значением, а item - nil

Алексей
14.08.2018
12:37:31
Никогда таких проблем c ObjectMapper не было, спокойно вложенные массивы разбирал
Просто посмотри внимательно все ключи да и все

Алексей
14.08.2018
12:39:00
я запрашиваю от сервера так
let manager = Alamofire.SessionManager.default
manager.session.configuration.timeoutIntervalForRequest = 500
manager.session.configuration.timeoutIntervalForResource = 500
manager.request(url, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil).validate()
.responseObject { (response: DataResponse<IncomeDocModel>) in
в моделе IncomeDocModel есть поле с типом ListFileModel. Оно тоже норм парсится. Пока не дошли до поля item у объекта ListFileModel
да только с этим ключем проблема, когда я в массив пытаюсь. со всеми остальными полями любого типа ок

Nurkhan
14.08.2018
12:52:31
Не получается, даже связал с UIView
только не забудь привязать к оутлету лейбу со сториборда

Google

Ruslan
14.08.2018
12:53:50
покажи код

Nurkhan
14.08.2018
12:54:50
Это уже новый проект

Ruslan
14.08.2018
12:55:27
ща
один вопрос
ты лейбе в сториборде выставил клас MTMathUILabel?

Nurkhan
14.08.2018
13:00:53
щя посмотрю
сработало
Спасибо Руслан!

qb
14.08.2018
13:02:30
Всем привет. Из Минска есть ребята в чате? Если да - то могли бы написать в ЛС?

Nurkhan
14.08.2018
13:02:57
Прям ОГРОМНОЕ СПАСИБО, Руслан! Неделю уже как хожу

Ruslan
14.08.2018
13:02:59
☺️
Всегда пожалуйста)

kilg
14.08.2018
14:00:31
привет, я правильно понимаю, что для выкладки приложения в AppStore мне нужно купить Apple Developer Program?

Yuriy
14.08.2018
14:01:06
Кстати. Ты чего в тоггле не пишешь над чем работаешь?

kilg
14.08.2018
14:05:02

Yuriy
14.08.2018
14:06:01
Уууупс, не тот чат))))

Timur
14.08.2018
15:39:34
Ребята, у меня в классе есть четыре метода, один мой а три от протокола WCSessionDelegate. Как с точки зрения проектирования заблокировать доступ к этим трем методам, я хочу чтобы они только взаимодействовали с первым. А внешне чтобы их не могли вызвать.

Google

Alexandr
14.08.2018
15:40:58

Timur
14.08.2018
15:43:33
Просто другой класс не должен ничего знать кроме моего метода, а то он может получить доступ к тем трем методам что является неправильным.

Haile
14.08.2018
15:47:05

Admin
ERROR: S client not available

Timur
14.08.2018
15:47:13
Swift

Haile
14.08.2018
15:47:33
в свите сделай просто private extension Class: WCSessionDelegate {} в файле с твоим классом

Timur
14.08.2018
15:49:20
Пробывал, пишет «private modifier cannot be used with extensions that declare protocol conformances”
Т.е. не получается из-за того что протокол WCSessionDelegate публичный

Maksim Gridin
14.08.2018
16:05:00

Timur
14.08.2018
16:05:36
Я понимаю, но как заблокировать доступ?
Только через класс-интерфейс?

Leshka
14.08.2018
16:09:46
Ребят, в чем может быть проблема - на Telegram X (IOS) при блокировке экрана музыка прекращает играть.

Akim
14.08.2018
16:41:12

L
14.08.2018
17:07:49
How does UITableViewDataSourcePrefetching work?

??
14.08.2018
17:16:20

Gold
14.08.2018
17:21:53
Добрый вечер. Я купил себе мак мини. Но монитор у меня старенький работает на dvi и vga
Посоветуйте плиз переходник китайский который норм работает с мак мини

Timur
14.08.2018
18:00:33
Есть какое-та либа которая находит не используемые но импортированные фреймворки в классах swift?

Viktor
14.08.2018
21:54:03
Всем привет. Кто-то делал импорт AssimpKit в Swift проект?

L
14.08.2018
22:41:21
https://stackoverflow.com/questions/51850673/load-all-cells-from-uitableview-instead-of-loading-cells-in-view

Google

Denis
15.08.2018
06:50:05
народ такой вопрос: у меня в середине цикла есть проверка на количество полученных данных из АПИ и если проверка проходит, то стоит комплишен... и все вроде отрабатывает и тейблвью выводится ровно с нужным количеством данных, но потом в переменную с данными догружается остальное с сервера... в итоге в место 20 элементов первых, там 300 элементов
комплишен работает как брейк поинт в функции или как-то по другому?

Alex
15.08.2018
06:52:03
не оч понятен вопрос

Denis
15.08.2018
07:18:21
если в функции есть эскейпинг комплишен - при его выполнении функция дальше не работает, я правильно понимаю?

Alex
15.08.2018
07:24:18
работает
она не работает после return
ставь после блока return и тогда выйдешь из функции
escaping про другое

Denis
15.08.2018
07:25:56
теперь понятно... я почему то думал что это тоже уход из функции, слово эскейпинг как-бы намекает ?
блин теперь все встало на места, а то я никак не мог понять где же глюки
спасибо

Alex
15.08.2018
07:50:56
??♂️
эскейпинг это про то, покидает ли замыкание функцию, в которую ты его передал (i.e. ретейнится)