Оболочка SQLite в iOS? - PullRequest
       9

Оболочка SQLite в iOS?

0 голосов
/ 26 апреля 2011

У меня есть приложение для iPhone, которое хранит информацию в базе данных SQLite.Это прекрасно работает на моем телефоне, а также мои братья.Материал получил написано на него, и он может читать из него.Однако при запуске его на чужих телефонах он просто вылетает.Почему?

Я использую оболочку SQLite Маттео Бертоцци (поместите файлы в папку классов и свяжите их с ними в моем .h, например: #import "Sqlite.h")

Я также импортировал libsqlite3.dylib в мой проект.

Объявил мою базу данных SQLite так же, как это в моем .h: Sqlite *database;

Настройте мою базу данных следующим образом:

if (database == nil) {
// Set up database connection
NSString *myDBTwo = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"flashpics.db"];
database = [[Sqlite alloc] init];
[database open:myDBTwo];
}

Ивызовите запрос, подобный этому (ни одна из моих переменных не равна нулю):

[database executeNonQuery:@"INSERT INTO images (id, thumbnail, album, caption) VALUES (?, ?, ?, ?)", photoID, thumbnailLocation, photoAlbumID, photoCaption];

Однако он падает на телефоне моего друга и возвращает EXC_BAD_ACCESS при попытке прочитать его. Ничего не происходит, когда вы пытаетесь написать вэто.

Пожалуйста, помогите!Спасибо

PS: вот ссылка на обертку: http://th30z.blogspot.com/2008/11/objective-c-sqlite-wrapper_8445.html

Edit # 1: Вот некоторые ошибки, которые я получаю при загрузке приложения.Может быть, это вызывает это?Или это не ссылка на нужную библиотеку?

warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.2.1 (8C148)/Symbols/usr/lib/info/dns.so (file not found).

И вот что я получаю, когда выполняю действие, которое приводит к сбою.

Program received signal:  “EXC_BAD_ACCESS”.
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.2.1 (8C148)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib (file not found).

Ответы [ 2 ]

2 голосов
/ 26 апреля 2011

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

РЕДАКТИРОВАТЬ: Извините, я вставил неправильный код, вот исправленная версия.

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *myDBTwo = [[paths objectAtIndex:0]stringByAppendingPathComponent:@"flashpics.db"];
1 голос
/ 26 апреля 2011

RTS верен, вы должны скопировать его в каталог документов (или в другое место), который доступен для записи.

Почему это работает на ваших устройствах? Если бы мне пришлось угадывать, я бы сказал, что вы оба взломаны, и что представление о пакете с кодовой подписью, которое нельзя изменить, на самом деле не применяется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...