Цель-c: Как хранить большой объем данных (приложение iOS RSS) - PullRequest
1 голос
/ 05 декабря 2011

В настоящее время я работаю над приложением Google Reader для iOS, и я хотел бы знать, каков наилучший способ хранения всех ранее загруженных данных (которые могут содержать до тысяч новостей)?Я слышал о Core Data, так ли это?Или было бы проще сохранить файл XML или JSON и проанализировать его?

Спасибо

Ответы [ 4 ]

3 голосов
/ 05 декабря 2011

Основные данные или прямое использование sqlite.

2 голосов
/ 05 декабря 2011

Базовые данные - это, в общем, хороший способ обработки больших объемов данных, особенно со сложными отношениями.

В этом конкретном случае, однако, вы можете стоять на плечах гигантов.NetNewsWire - это радар для iOS RSS (который использует google reader), он некоторое время использовал Core Data и отказался от него.Тогдашний автор NewNewsWire был достаточно любезен, чтобы написать, почему в http://inessential.com/2010/02/26/on_switching_away_from_core_data

я не думаю, что что-то из этого изменилось бы, поэтому, если ваш читатель RSS не сильно отличается от NetNewsWire, он будет быстрее, если онизбегает Core Data и использует sqlite (напрямую или через какую-то инфраструктуру, такую ​​как FMDB).Я также готов поспорить, что вы будете «быстрее выходить на рынок», если будете использовать Core Data и бьете по производительности.

(теперь фокус вашей программы RSS может сильно отличаться, и поэтому, возможно, вы никогда не будетенужно сделать эквивалент update newsItems set read = 1 where для 10000 элементов или любых других вещей, где Core Data мешает больше, чем помогает - если это так, во что бы то ни стало, запустите Core Data)

ПРИМЕЧАНИЕ: все изменилосьнемного, так как этот ответ был написан.iOS 8 добавила некоторую поддержку массовых операторов, которые обходят некоторые из них, см., например, NSBatchUpdateRequest.У меня нет прямого опыта с этим, и вам нужно было бы отказаться от iOS 7 и предыдущей поддержки (или написать код дважды, и хорошо работать только для больших наборов данных на iOS 8+).Также применимы все предупреждения об использовании «новых» вещей («не так хорошо проверено», «не так много мест, к которым можно обратиться за помощью»), конечно же, с учетом того, что оно идеально подходит для вашей проблемы, и Oooo Shiny!

1 голос
/ 05 декабря 2011

Да, вы правы. Если вы не потратили время на изучение SQLite, XML или JSON ... использование Core Data - безусловно, лучший и самый простой вариант для реализации. Он создан Apple для приложений и операционных систем Apple. Очень хорошая документация и пример кода на www.developer.apple.com под Core Data. Начни здесь: Руководство по программированию основных данных на developer.apple.com

1 голос
/ 05 декабря 2011

Использовать основные данные.Это идеально подходит для того, что вам нужно.Посмотрите документацию и получите множество примеров кода (вы даже можете запустить новый проект в XCode и выбрать опцию основных данных, чтобы он заполнил делегат приложения всем необходимым для вас кодом основных данных.

...