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 or SQLITE_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.