Сколько записей я могу добавить в iPhone? - PullRequest
2 голосов
/ 24 сентября 2010

Я хочу задать вопрос об iPhone. Я пишу программу, которая может добавить запись во встроенные контакты iPhone. Тем не менее, я не знаю, сколько пользователей может хранить в контактах iPhone. Есть ли какое-то ограничение (например, встроенные контакты iPhone поддерживают только запись 2000). размера контактов?

Кроме того, может ли размер iPhone (например, 32 ГБ, 64 ГБ) или других элементов повлиять на размер книги контактов? Спасибо.

1 Ответ

1 голос
/ 24 сентября 2010

Контакты хранятся в паре баз данных SQLite на телефоне, поэтому единственными ограничениями являются ограничения, налагаемые SQLite и вычислительной мощностью устройства.

Короткий ответ: маловероятностолкнуться с проблемой, если вы не пытаетесь сделать что-то чрезвычайно крупномасштабное, например, написать приложение для справочника компании для ~ 1,6 млн. сотрудников Индийской железной дороги или захватить всех ~ 200 млн. зарегистрированных избирателей в США.Я создал базу данных со всеми американскими почтовыми индексами и другую с несколькими сопоставлениями для всех английских, немецких, французских и испанских слов из стандартных словарей правописания Linux и не столкнулся с проблемами.Последний имел таблицу с более чем 3 миллионами записей и отлично работает на оригинальном iPhone.

С большей вероятностью вы столкнетесь с ограничениями производительности машины до абсолютного ограничения на количество записей.Например, рассмотрим это на сайте SQLite :

Когда вы запускаете транзакцию в SQLite (что происходит автоматически перед любой операцией записи, которая не входит в явный BEGIN ...COMMIT) движок должен выделить битовый массив грязных страниц в файле диска, чтобы помочь ему управлять журналом отката.SQLite требуется 256 байтов оперативной памяти на каждый 1 МБ базы данных.Для небольших баз данных объем требуемой памяти не является проблемой, но когда базы данных начинают расти в диапазоне нескольких гигабайт, размер растрового изображения может стать довольно большим.Если вам нужно хранить и изменять более нескольких десятков ГБ данных, вам следует рассмотреть возможность использования другого механизма базы данных.

Итак, (если я правильно понял), для базы данных 30G потребуется 7,5 млн.пространства для растровых изображений во время вставки.Это может быть сложно на первом поколении iPhone (кроме того, было только 64M RAM и 16G Flash), но, возможно, хорошо на более поздних моделях с большим объемом памяти.Тем не менее, прежде чем вы перейдете к такому количеству записей, обновление индексов или запрос к их отображению в AddressBook.app может привести к неприемлемой производительности.

Если вы хотите изучить схему AddressBook, создайте один контакт всимулятор, затем в окне терминала:

% cd "~/Library/Applications Support/iPhone Simulator/4.0.2/Library/AddressBook"
% sqlite AddressBook.sqlitedb
sqlite> .schema

Это, однако, отличный пример того, почему вы должны протестировать свое приложение на реальном устройстве, прежде чем отправлять его в магазин.Такое приложение без проблем будет работать в многоядерной многоядерной памяти RAM объемом 4 ГБ на симуляторе 3,0 ГГц, но не очень хорошо на iPod Touch второго поколения с частотой 1/2 ГГц.

...