Форум программистов, компьютерный форум, киберфорум
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
8 / 8 / 1
Регистрация: 09.08.2013
Сообщений: 68

Сохранение информации при переходе от одного контроллера к другому

09.08.2013, 17:58. Показов 2108. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть несколько классов наследующих UIViewController(GameViewController,Shar eViewController,AboutViewController)
Вопрос в том,как сохранять счет игры во время переходов между контроллерами.
Среди вариантов :сохранять score в файл(как-то криво),создать синглтон-класс и создавать глобальную переменную в AppDelegate
Есть ли какое-то более простое решение?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.08.2013, 17:58
Ответы с готовыми решениями:

Визуальное перелистывание изображения при переходе от одного изображения к другому
Здравствуйте,нужна помощь,как можно в C#,windows form создать приложение которое делает визуальное перелистывание изображения при переходе...

Ошибка контроллера при переходе по ссылке (@RequestMapping) No mapping found for HTTP
Не могу понять, почему не работает на странице в addNews.jsp http://localhost:8080/имя_проекта/addNews после заполнения 1 поля я...

Занесение информации в БД при переходе по ссылке
Добрый день! Стоит задача, что бы при (активации)переходе по ссылке в БД заносилась информация, например: нет перехода - в БД значение...

13
Peace 2 all shining faces
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
09.08.2013, 21:32
Цитата Сообщение от fatalis Посмотреть сообщение
создавать глобальную переменную в AppDelegate


тут уже миллион раз поднимался этот вопрос, вариантов - уйма:
БД, плист, хмл, тхт, юзердефолтс, ...

можно даже статическим классом обойтись, если туда нужно только преедать очки, а тот просто запишет инфу куда-то
0
8 / 8 / 1
Регистрация: 09.08.2013
Сообщений: 68
09.08.2013, 22:10  [ТС]
БД,плист,хмл - все это работа с файлами(вариант о котором я упомянул).Не поверите! Статический класс я тоже разглядывал,как вариант.Я просто интересуюсь(о чем я собственно написал в теме),нет ли более простого решения для этой,казалось бы,тривиальной задачи
0
Peace 2 all shining faces
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
09.08.2013, 22:19
NSUserDefaults – грубо говоря – словарь на время жизни приложения, пока его не удалят
0
8 / 8 / 1
Регистрация: 09.08.2013
Сообщений: 68
09.08.2013, 22:34  [ТС]
Информация мне нужна исключительно во время работы программы( но доставать ее нужно будет много раз) и я опасаюсь,что работа с файлами(тем более,со словарем) будет сильно замедлять работу приложения.Поэтому я более склоняюсь к https://ru.wikipedia.org/wiki/... 0%B8%D1%8F) или к статическому классу.
0
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
09.08.2013, 23:21
Словарь работает очень быстро. Ключи внутри отсортированы, поэтому со скоростью проблем нет.
0
0 / 0 / 0
Регистрация: 10.08.2013
Сообщений: 5
10.08.2013, 01:07
Не могу предложить новых вариантов, но пишу из интереса, почему не подходит решение с объектом-синглтоном? По-моему, он тут хорошо подойдёт. Никакой работы с файлами, гарантированный доступ из разных мест.
0
Peace 2 all shining faces
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
10.08.2013, 02:15
да потому что стоит пересмотреть предоставленные средства для начала, а потом уже велосипед изобретать
есть NSUserDefaults, который просто никак лучше подходит для этой задачи, а вы сейчас синглтонов наклепаете и рады

к тому же уверен, что реализуете вы их неправильно, что может повлечь за собой утечки в памяти, проблемы с вызовом из разных потоков и замедлению работы
вообще стоит стараться поменьше синглтонов создавать, а если и создавать то следить чтобы были реализованы правильно (а в objective-c это геморнее чем где бы то ни было), ну и следить за такими вещами как synchronized, что может повлечь замедление в работе, это описано у Фримана "Head first design patterns"
0
0 / 0 / 0
Регистрация: 10.08.2013
Сообщений: 5
10.08.2013, 02:25
Цитата Сообщение от Vorona Посмотреть сообщение
да потому что стоит пересмотреть предоставленные средства для начала, а потом уже велосипед изобретать
есть NSUserDefaults, который просто никак лучше подходит для этой задачи, а вы сейчас синглтонов наклепаете и рады
Вы предлагаете человеку ради оперативного доступа к внутриигровому счёту записывать его в нечто, предназначенное для сохранения пользовательской информации от запуска к запуску приложения (пусть даже его можно использовать и для других целей) и периодически синхронизирующееся с жёстким диском устройства? Я абсолютно солидарен с автором темы по поводу "я опасаюсь,что работа с файлами(тем более,со словарем) будет сильно замедлять работу приложения".
0
Peace 2 all shining faces
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
10.08.2013, 04:33
Цитата Сообщение от someAlex Посмотреть сообщение
я опасаюсь,что работа с файлами(тем более,со словарем) будет сильно замедлять работу приложения
пффф, серьезно? чем обосновывается предположение, что работа со словарем будет замедлять работу приложения?
перешли на другой контроллер, сохранили данные и прочитали, все.

Цитата Сообщение от someAlex Посмотреть сообщение
нечто, предназначенное для сохранения пользовательской информации от запуска к запуску приложения
в это нечтно можно записывать информацию на протяжении всей работы приложения, а не только на входе\выходе, это самая обычнейшая практика, которая, если не ошибаюсь, описана в оффициальной документации

какая разница, записывать их в синглтон объект и таким же макаром читать, а потом на выходе из приложения сохранять куда-то, и на входе считывать откуда-то, или просто хранить в словаре, который доступен всегда, пока приложение существует

словарь, это хеш таблица, работает неимоверно быстро

не говорите ерунды, 21 век на дворе, мы же не светофоры программируем

p.s. тем более, что предложение действительно простейшее, а обращение к синглтону, у которого доступ к sharedInstance обернут в synchronize, это быстрее по вашему?
да и вообще, старайтесь поменьше этих синглтонов юзать, когда можно обойтись хорошими удобными и быстрыми предоставленными средствами

Objective-C
1
2
[[NSUserDefaults standardUserDefaults] setObject:@193 forKey:@"scores"];
NSNumber *scores = [[NSUserDefaults standardUserDefaults] objectForKey:@"scores"];
просто нереально медленно и сложно . . .
0
 Аватар для noname_club
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
10.08.2013, 11:21
ну и следить за такими вещами как synchronized
я вообще почти их не использую

достаточно вызвать знак подчеркивания чтобы получить значение свойства, что я делаю не так? ))

что может повлечь замедление в работе
синглтон может повлечь замедление только в циклах. Для этого достаточно ссылку на экземпляр вынести в отдельный указатель перед циклом.

пффф, серьезно? чем обосновывается предположение, что работа со словарем будет замедлять работу приложения?
перешли на другой контроллер, сохранили данные и прочитали, все.
cловарь работает быстро, с этим никто не спорит, однако словарь не может дать того удобства которого дают property в синглтоне, так как это в данном случае не словарь а набор полей. Логически более точно отражающих суть данных задачи. Некоторые из них могут быть тупо числами

Согласитесь что операции с такими данными как числа, синтаксически затруднительна в Obj-C

p.s. тем более, что предложение действительно простейшее, а обращение к синглтону, у которого доступ к sharedInstance обернут в synchronize, это быстрее по вашему?
да и вообще, старайтесь поменьше этих синглтонов юзать, когда можно обойтись хорошими удобными и быстрыми предоставленными средствами
[NSUserDefaults standardUserDefaults] setObject:@193 forKey:@"scores"];
NSNumber *scores = [[NSUserDefaults standardUserDefaults] objectForKey:@"scores"];
[NSUserDefaults standardUserDefaults] чтоже является сингтоном, причем не менее медленным.

в данном случае синглтон может быть выступать ввиде обертки как NSUserDefaults, и содержать метод save

который как и syncronize можно вызывать в любое время в любом месте кода

пример кода тогоже кода с синглотоном

Objective-C
1
2
3
4
5
6
7
8
9
#define Singleton [MySingleton getInstance]
 
...
 
Singleton.scores = 193;
 
// если надо сохранить
 
[Singleton save];
0
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
10.08.2013, 11:57
Из примитивного вопроса такую бучу раздули - журналюги обзавидуются, если въедут в чем тут дело.
Voron'у с толку сбили, noname_club очередных глупостей налепил, слов умных наговорили не поделу. Движуха! Аж дух захватывает.
fatalis, смело используйте Singleton, ему тут самое место. Особенно, если у вас одно игровое поле. В вашем случае сложно что-нибудь им сломать. Хотя, при известной сноровке...
1
 Аватар для zulkis
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
10.08.2013, 12:27
Эммм, noname_club, спасибо за новый взрыв моего мозга.
Сразу так хорошо стало
0
8 / 8 / 1
Регистрация: 09.08.2013
Сообщений: 68
11.08.2013, 15:32  [ТС]
Реализовал синглтон,всем спасибо за советы.
Если нужно скинуть пример реализации(хотя их и так премного) - обращайтесь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.08.2013, 15:32
Помогаю со студенческими работами здесь

Сохранение данных при переходе по ссылкам
Пишу расширение для firefox (делаю это впервые). Суть расширения: автоматизация некоторых действий на сайте. Написал JS-скрипт,...

Как выполнить редирект с одного метода контроллера в другой, без пересоздания контроллера
Я делаю в одном из методов RedirectToAction() , в результате чего, перед перенаправлением обновляется текущий контроллер. Как сделать...

Как передать из одного контроллера объект модели в строго типизированное представление другого контроллера
Есть строго типизированное представление в контроллере Main, в методе ListOrders. Как в него можно передать модель, класса Customer из...

Сохранение полноэкранности сайта при переходе по ссылкам
Можно ли сделать, чтобы полноэкранный режим, включаемый requestFullScreen(), не выключался сам при переходе по ссылк на другую страницу...

Сохранение действий на страницах при переходе по ним
<SPAN class=postbody>Сразу о наболевшем... вот http://office.microsoft.com/ru-ru/clipart/results.aspx?CategoryID=CM790019531049#0 пример ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru