Custom SQLite Library
PSPDFKit for iOS does not include a custom version of SQLite, as iOS comes with SQLite already bundled. Depending on the version of iOS, this version is different and will also have different capabilities enabled:
iOS | SQLite |
---|---|
11.0 / macOS High Sierra 10.13 | 3.18.0 with FTS5 Extension |
10.3 / macOS Sierra 10.12.4 | 3.16.0 |
10.0-10.2 / macOS Sierra 10.12.0 | 3.14.0 |
9.1 - 9.3 / OS X El Capitan 10.11.6 | 3.8.10.2 |
9.0 | 3.8.8 |
If you see SQLite log warnings, read up on our troubleshooting tips.
Check the SQLite website to see what version is the most current. Sometimes your app requires a specific SQLite version. For example:
- you need to have the same SQLite version on every iOS version you support,
- you want to use some new SQLite features that are not yet available in SQLite shipped with iOS.
- you want to encrypt your SQLite database (see SQLite Database Encryption).
- you want to use FTS5 with
PSPDFLibrary
In such cases you usually link your app with a custom build of SQLite.
Detect what version is currently active
Call this in code to see what version of SQLite you currently use
1 2 | // e.g. "3016000" for macOS 10.12.4 int sqliteVersion = sqlite3_libversion_number(); |
PSPDFKit and a custom SQLite library
PSPDFKit is dynamically linked with SQLite provided by iOS SDK. However if you link your app with a custom SQLite library, PSPDFKit will automatically use it. You might want to remove the -lsqlite3
string from PSPDFKit.xcconfig inside the framework to remove the system linking.
Make sure your custom SQLite library is built with the following flags:
SQLITE_THREADSAFE=1
orSQLITE_THREADSAFE=2
and if you're using PSPDFLibrary
:
To use FTS5:
SQLITE_ENABLE_FTS5
To use FTS4:
SQLITE_ENABLE_FTS3
SQLITE_ENABLE_FTS3_PARENTHESIS
PSPDFKit expects these options and fails early if any of these are missing.