попробуйте кэш для сериализации
do {
if let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String : Any] { // as? data type
if let otherDict = json["dataKey"] as? [String : Any] {
//do something
}
}
} catch {
// can't json serialization
}
Я думаю, вы должны попробовать что-то вроде этого:
private void setTimeLimit(Object timeLimit) {
if (Objects.isNull(this.timeLimit)) {
this.timeLimit = timeLimit;
}
}
Однако, я рекомендую вам изменить структуру классов, чтобы инициализировать только один раз в первый раз.
Сеттер не должен заботиться о том, когда и сколько раз он вызывается извне. Если вы не хотите показывать setTimeLimit()
вне класса и хотите, чтобы он вызывался только один раз за итерацию, тогда как насчет принятия списка «чего-то», а не одного «чего-то».
т.
public class MyClass {
public void setSomethings(List<String> somethings) {
setTimeLimit();
somethings.forEach(this::setSomething);
}
private void setSomething(String something) {
// ...
}
private void setTimeLimit() {
// ...
}
}
Таким образом, MyClass получает требуемый элемент управления, не нарушая функциональных отношений между MyClass и его потребителями.