0% found this document useful (0 votes)
122 views47 pages

Practical Core Data: A Modern Guide To The Core Data Framework Donny Wals Instant Download

The document is a guide titled 'Practical Core Data' by Donny Wals, which provides comprehensive insights into the Core Data framework for iOS development. It covers various topics including setting up Core Data, defining entities, fetching data, multithreading, and synchronizing data with remote sources. The guide is structured into chapters that progressively build knowledge and skills for effective Core Data implementation.

Uploaded by

dimitcloftskt
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
122 views47 pages

Practical Core Data: A Modern Guide To The Core Data Framework Donny Wals Instant Download

The document is a guide titled 'Practical Core Data' by Donny Wals, which provides comprehensive insights into the Core Data framework for iOS development. It covers various topics including setting up Core Data, defining entities, fetching data, multithreading, and synchronizing data with remote sources. The guide is structured into chapters that progressively build knowledge and skills for effective Core Data implementation.

Uploaded by

dimitcloftskt
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 47

Practical Core Data: A modern guide to the Core

Data framework Donny Wals pdf download

https://ebookmeta.com/product/practical-core-data-a-modern-guide-
to-the-core-data-framework-donny-wals/

Download more ebook from https://ebookmeta.com


We believe these products will be a great fit for you. Click
the link to download now, or visit ebookmeta.com
to discover even more!

Core Data Mastery in SwiftUI Mark Moeykens

https://ebookmeta.com/product/core-data-mastery-in-swiftui-mark-
moeykens/

Pro Entity Framework Core 2 for ASP.NET Core MVC 1st


Edition Adam Freeman

https://ebookmeta.com/product/pro-entity-framework-core-2-for-
asp-net-core-mvc-1st-edition-adam-freeman/

Practical Entity Framework Core 6: Database Access for


Enterprise Applications Brian L. Gorman

https://ebookmeta.com/product/practical-entity-framework-
core-6-database-access-for-enterprise-applications-brian-l-
gorman/

Into One's Own: From Youth to Adulthood in the United


States, 1920-1975 John Modell

https://ebookmeta.com/product/into-ones-own-from-youth-to-
adulthood-in-the-united-states-1920-1975-john-modell/
Financial Reckoning Day: Memes, Manias, Booms & Busts
... Investing In the 21st Century 3rd Edition Addison
Wiggin

https://ebookmeta.com/product/financial-reckoning-day-memes-
manias-booms-busts-investing-in-the-21st-century-3rd-edition-
addison-wiggin/

A Foreboding of Petrels (Birder Murder Mystery 7) 1st


Edition Steve Burrows

https://ebookmeta.com/product/a-foreboding-of-petrels-birder-
murder-mystery-7-1st-edition-steve-burrows/

A Federal Perspective on the Abkhaz Georgian Conflict


From Intractability to Pacification 1st Edition Romina
Gurashi

https://ebookmeta.com/product/a-federal-perspective-on-the-
abkhaz-georgian-conflict-from-intractability-to-pacification-1st-
edition-romina-gurashi/

Breaking Waves 1st Edition Barry Litherland

https://ebookmeta.com/product/breaking-waves-1st-edition-barry-
litherland/

A Marriage Made in Heaven The Sexual Politics of Hebrew


and Yiddish Naomi Seidman

https://ebookmeta.com/product/a-marriage-made-in-heaven-the-
sexual-politics-of-hebrew-and-yiddish-naomi-seidman/
The Alpha Female Wolf: The Fierce Legacy of
Yellowstone's 06 (The Alpha Wolves of Yellowstone)
First Edition Rick Mcintyre

https://ebookmeta.com/product/the-alpha-female-wolf-the-fierce-
legacy-of-yellowstones-06-the-alpha-wolves-of-yellowstone-first-
edition-rick-mcintyre/
Contents
Practical Core Data: A modern guide to the Core Data framework 6

Chapter Overview 8
Chapter 1 - Taking your first steps with Core Data . . . . . . . . . . . . . . . . . . . 8
Chapter 2 - Understanding Core Data’s building blocks . . . . . . . . . . . . . . . . 8
Chapter 3 - Defining entities using the model editor . . . . . . . . . . . . . . . . . 8
Chapter 4 - Fetching and displaying data from a Core Data store . . . . . . . . . . . 9
Chapter 5 - Using Core Data in a multithreaded environment . . . . . . . . . . . . 9
Chapter 6 - Sharing a Core Data store with apps and extensions . . . . . . . . . . . 10
Chapter 7 - Synchronizing your store with a remote data source . . . . . . . . . . . 10
Chapter 8 - Synchronizing your store with CloudKit . . . . . . . . . . . . . . . . . 10
Chapter 9 - Updating your data model and performing migrations . . . . . . . . . 11
Chapter 10 - Debugging and profiling your Core Data implementation . . . . . . . 11
Chapter 11 - Using Core Data in your unit tests . . . . . . . . . . . . . . . . . . . . 11
Chapter 12 - Where to go from here? . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Chapter 1 - Taking your first steps with Core Data 13


Creating a project that uses Core Data . . . . . . . . . . . . . . . . . . . . . . . . . 13
Creating an NSPersistentContainer and loading your data model . . . . . . . . . . 17
Defining a simple Core Data entity . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Adding new records to a Core Data store . . . . . . . . . . . . . . . . . . . . . . . 24
Retrieving records from your store . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Modifying and deleting records . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Chapter 2 - Understanding Core Data’s building blocks 34


Breaking down the persistent container . . . . . . . . . . . . . . . . . . . . . . . . 34
Understanding the managed object model . . . . . . . . . . . . . . . . . . . 37
Understanding the persistent store coordinator . . . . . . . . . . . . . . . . 39
Diving deeper into managed object contexts . . . . . . . . . . . . . . . . . . 40
Exploring Core Data’s underlying storage . . . . . . . . . . . . . . . . . . . . . . . 42
In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Practical Core Data

Chapter 3 - Defining entities using the model editor 45


Defining entities and their properties in the model editor . . . . . . . . . . . . . . 45
Adding properties with arbitrary types to your model . . . . . . . . . . . . . . . . 53
Writing and generating NSManagedObject subclasses . . . . . . . . . . . . . . 60
Using the Class definition Codegen option . . . . . . . . . . . . . . . . . . . 60
Using the Category/Extension Codegen option . . . . . . . . . . . . . . . . . 63
Using the Manual/None Codegen option . . . . . . . . . . . . . . . . . . . . 64
Managing relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Understanding Core Data’s different relationships . . . . . . . . . . . . . . . 66
Setting up a relationship in Core Data’s model editor . . . . . . . . . . . . . . 67
Using fetched properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Understanding abstract entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

Chapter 4 - Fetching and displaying data from a Core Data store 79


Understanding how Core Data executes a fetch request . . . . . . . . . . . . . . . 79
Exploring Core Data’s faulting behavior . . . . . . . . . . . . . . . . . . . . . 81
Filtering and sorting results with Predicates and Sort Descriptors . . . . . . . . . . 84
Fetching data using NSFetchedResultsController . . . . . . . . . . . . . . . . 91
Using a fetched results controller in a UIKit app . . . . . . . . . . . . . . . . 92
Using a fetched results controller in SwiftUI . . . . . . . . . . . . . . . . . . . 103
Using @FetchRequest to replace fetched results controller in SwiftUI . . . . . 107
Using SectionedFetchRequest to fetch sectioned data in SwiftUI . . . . . . . 109
Building a filter screen with SwiftUI’s @FetchRequest and dynamic predicates . . . 115
In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

Chapter 5 - Using Core Data in a multithreaded environment 120


Understanding Core Data’s multithreading model . . . . . . . . . . . . . . . . . . 121
Passing managed objects between contexts . . . . . . . . . . . . . . . . . . . . . 128
Understanding and using child contexts . . . . . . . . . . . . . . . . . . . . . . . . 135
Responding to changes in another managed object context . . . . . . . . . . . . . 144
Understanding Core Data’s query generations . . . . . . . . . . . . . . . . . . . . 152
In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

Donny Wals 3
Practical Core Data

Chapter 6 - Sharing a Core Data store with apps and extensions 160
Setting your app up for data sharing with App Groups . . . . . . . . . . . . . . . . 160
Enabling App Groups for your app or extension . . . . . . . . . . . . . . . . . 161
Configuring your persistent container for data sharing . . . . . . . . . . . . . 162
Migrating an existing SQLite store to your App Group . . . . . . . . . . . . . . 164
Efficiently using a shared Core Data store . . . . . . . . . . . . . . . . . . . . . . . 169
Understanding why batch requests don’t trigger notifications . . . . . . . . . 169
Getting started with persistent history tracking . . . . . . . . . . . . . . . . . 173
Using persistent history tracking with multiple apps and extensions . . . . . 182
In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

Chapter 7 - Synchronizing your store with a remote data source 191


Using a remote data source to populate a local store . . . . . . . . . . . . . . . . . 192
Using a JSON response to populate a Core Data store . . . . . . . . . . . . . 193
Improving your data import with batch inserts . . . . . . . . . . . . . . . . . 200
Performing incremental updates based on remote data . . . . . . . . . . . . 205
Synchronizing local changes to a remote store . . . . . . . . . . . . . . . . . . . . 211
Deciding on a synchronization strategy . . . . . . . . . . . . . . . . . . . . . 212
Implementing your synchronization strategy . . . . . . . . . . . . . . . . . . 213
In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

Chapter 8 - Synchronizing your store with CloudKit 232


Preparing your application for CloudKit synchronization . . . . . . . . . . . . . . . 233
Updating your code with NSPersistentCloudKitContainer . . . . . . . . . . . 234
Updating your project’s capabilities . . . . . . . . . . . . . . . . . . . . . . . 236
Seeing your persistent CloudKit container in action . . . . . . . . . . . . . . 238
Modeling your entities for CloudKit . . . . . . . . . . . . . . . . . . . . . . . 241
Exploring the iCloud dashboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Taking a look at your CloudKit Schema . . . . . . . . . . . . . . . . . . . . . 246
Understanding how persistent CloudKit container handles relationships . . . 248
Configuring which entities are synchronized using model configurations . . . . . . 251
Using fetch properties to establish a relationship between entities in different
stores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Creating and using separate model configurations . . . . . . . . . . . . . . . 255

Donny Wals 4
Practical Core Data

Adding data to a public CloudKit store . . . . . . . . . . . . . . . . . . . . . . . . . 258


Setting up a model configuration for the public database . . . . . . . . . . . 258
Updating the CloudKit schema for the public database . . . . . . . . . . . . 260
Understanding the differences between the private and public database . . . 261
Understanding CloudKit’s conflict resolution . . . . . . . . . . . . . . . . . . . . . 263
Understanding CloudKit’s migration limitations . . . . . . . . . . . . . . . . . . . 264
In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

Chapter 9 - Updating your data model and performing migrations 272


Understanding Core Data migration types . . . . . . . . . . . . . . . . . . . . . . . 272
Adding a new model version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Performing a lightweight migration . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Defining a model map for your migration . . . . . . . . . . . . . . . . . . . . . . . 281
Writing a custom migration policy . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Performing a custom step-by-step migration . . . . . . . . . . . . . . . . . . . . . 295
Writing tests for your step-by-step migrations . . . . . . . . . . . . . . . . . . . . 313
Obtain SQLite files from devices and simulators . . . . . . . . . . . . . . . . 314
Adding a test target and verifying a migration . . . . . . . . . . . . . . . . . . 318
In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

Chapter 10 - Debugging and profiling your Core Data implementation 326


Measuring and improving performance with Instruments . . . . . . . . . . . . . . 326
Peeking under the hood with launch arguments . . . . . . . . . . . . . . . . . . . 345
Investigating the performance of NSFetchedResultsController with diffable data
source snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

Chapter 11 - Using Core Data in your unit tests 363


Setting up an in-memory SQLite store . . . . . . . . . . . . . . . . . . . . . . . . . 363
Properly loading your managed object model . . . . . . . . . . . . . . . . . . . . 368
In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

Chapter 12 - Where to go from here 372

Donny Wals 5
Practical Core Data

Practical Core Data: A modern guide to


the Core Data framework
Core Data is a framework that I used in my very first iOS project. It was an application that I
had to create as a part of my graduation internship in early 2014, and it was the subject of my
college thesis. The project I worked on was part of a campaign for a big-name brand. They
wanted to promote their car-focused air-freshener.
The campaign involved a group of people, a car, and a whole bunch of smelly challenges that
they had to complete. The premise was that the car would smell fresh, no matter what.
My job was to figure out a way for the production team to take snapshots of the team in the
car automatically, and remotely so they could be published on social media or used as part of
the campaign in other ways.
My design involved two iPhones that would be mounted in the car to take pictures. The phones
were connected to a webserver using a socket connection, and the production team used an
iPad to configure and use the phone cameras. Since internet connection would likely be spotty
during the trip, every captured picture was stored on the phone using Core Data along with
some metadata like the current location of the car (some of the pictures were supposed to
show up on a map). The photos were kept in the store until they were uploaded and then they
were wiped from the device to save space because the pictures didn’t really have a purpose
on the device anymore once they were uploaded.
This project wasn’t terribly complicated, and Core Data worked absolutely fine for this
project.
It didn’t take long after that initial Core Data experience for me to discover some of Core Data’s
rough edges involving multithreading and having multiple managed object contexts. I bought
the Core Data book from objc.io at some point and that book taught me a lot about Core Data,
and it helped me understand some of Core Data’s details much better.
Not long after that, Apple introduced NSPersistentContainer with iOS 10. It was imme-
diately clear to me that Apple was putting significant effort into making Core Data easier to
work with. In the iOS versions after that, Apple added improvement after improvement but
somehow there weren’t a lot of people writing about Core Data anymore. I think Core Data
has had a tough time losing that bad reputation from its earlier days.

Donny Wals 6
Practical Core Data

In this book, I hope to show you that Core Data isn’t as rough as it used to be. In fact, I find
Core Data quite pleasant to work with nowadays, and I hope that my enthusiasm will spark
some enthusiasm in you as well. Of course, Core Data isn’t always easy to work with. That’s
another part of why I wrote this book. I want to provide you with a solid foundation that helps
you understand, and use, Core Data in modern applications. Both in SwiftUI, and in UIKit.
This book has been a long time in the making, and if it wasn’t for my wife Dorien, it probably
would have taken me even longer. Her ongoing support and understanding throughout the
writing process has been amazing. I owe her a bunch of date-nights to make up for all the
time I’ve spent cooped up in my office.
I want to thank everybody that has provided feedback on the pre-release version of this book
that I released a few weeks before releasing the full book. I have received tons of input and
it’s been incredibly useful. I especially want to thank David DeWolfe for providing me with an
extensive list of corrections and improvements with regards to spelling on both the pre-release
and the final version of the book. I’m truly grateful for the work you’ve put in to help me out,
David.
And of course, I want to extend a big thanks to you, the reader. Without you, this book wouldn’t
exist at all. So thank you for buying this book and supporting my work. It means a ton to
me.
If you find any mistakes, errors or inconsistencies in this book don’t hesitate to send me an
email at [email protected]. I’ve put a lot of care and attention into this book but
I’m only human and I need your feedback to make this book the best resource it can be. Make
sure you also reach out if you have any questions that aren’t answered by this book even
though you hoped it would so I can answer your questions directly, or possibly update the
book if needed.
Cheers,
Donny

Donny Wals 7
Practical Core Data

Chapter Overview

Chapter 1 - Taking your first steps with


Core Data
In this chapter, you will take your first look at Core Data. You will learn what Core Data is, what
it can do, and how it can be used. You will be introduced to a simple project that uses Core
Data to create, update, and delete a very basic model. This chapter will introduce Core Data’s
model editor as well as the NSPersistentContainer class that encapsulates all of Core
Data’s essential building blocks. By the end of this chapter, you should have a rough idea of
what an application that uses Core Data looks like, what it’s capable of, and how you can add
Core Data to a project.

Chapter 2 - Understanding Core Data’s


building blocks
Before we get around to using Core Data in an application, it’s important to understand some
of Core Data’s essential building blocks. In this chapter, you will learn which components
are inside an NSPersistentContainer, and what the role of each component is. You
will learn about classes such as NSPersistentStoreCoordinator, NSManagedOb-
jectModel, and NSManagedObjectContext.

Chapter 3 - Defining entities using the


model editor
Core Data’s model editor is the starting point for adding Core Data to any project. It’s where
you define the entities that you want to store, their relationships, their properties, and more.

Donny Wals 8
Practical Core Data

This chapter will provide an in-depth look at the model editor. You will learn about entities,
relationships, fetch requests, transient properties, constraints, model versions, and much
more. By the end of this chapter, you will have a solid understanding of the model editor and
how you can use it to define your data models.

Chapter 4 - Fetching and displaying data


from a Core Data store
Once you have defined a data model for your application, you’ll want to use this model in
your application. In this chapter, you will learn how you can retrieve data from a Core Data
store using predicates to filter data. You will also learn how you can automatically respond to
changes in your Core Data store using an NSFetchedResultsController. In addition to
learning more about retrieving data, you will also learn about faults, batch delete and update
requests, merge policies, and query generations. By the end of this chapter, you should have
a pretty solid understanding of how you can manipulate the data that you have stored in your
Core Data store.

Chapter 5 - Using Core Data in a


multithreaded environment
In the first four chapters, you’ve used Core Data in a simple, single-threaded environment.
You’ve only interacted with the main managed object context through the persistent con-
tainer’s viewContext. In this chapter you will learn about Core Data’s strict multithreading
rules and background contexts. You will learn how you can safely transfer a managed object
from one context to the other, how you can solve save conflicts between contexts, and how
you can safely run your Core Data code in the correct managed object context. By the end of
this chapter you will be able to optimize your Core Data code to make optimal use of threading,
and to prevent blocking the main thread at all times.

Donny Wals 9
Practical Core Data

Chapter 6 - Sharing a Core Data store with


apps and extensions
Many applications make use of iOS’ extension system to build widgets, interactive notifications,
share functionality, iMessage apps and more. If your app uses Core Data, it’s often desirable
that these extensions have access to your Core Data store and can make modifications if
needed. In this chapter, you will learn how you can do this. You will also learn how you can
use Core Data’s persistent history tracking features to automatically pull in any modifications
that were made to your Core Data store by one of your extensions.

Chapter 7 - Synchronizing your store with


a remote data source
A common use of Core Data is to locally persist data that also exists on a server that’s accessed
over the network. Doing this can dramatically increase your application’s speed and offline
experience because you don’t need to rely on the network for every piece of data your views
require. In this chapter, I will demonstrate how you can build a synchronization strategy that
uses the Codable protocol and Core Data’s built-in merge policies. After showing you a basic
one-way synchronization strategy I will show you a more advanced two-way synchronization
strategy that allows users to make modifications to records while they are offline. These
modifications are then pushed to a remote data source when the user is back online.

Chapter 8 - Synchronizing your store with


CloudKit
With iOS 13 Apple introduced a convenient way for developers to synchronize their local Core
Data stores with a remote CloudKit store with hardly any effort at all. This feature allows users
to synchronize data across their devices and Core Data does all the hard work on its own. In

Donny Wals 10
Practical Core Data

this chapter, you will learn how you can leverage this feature, and how you can write data to
CloudKit’s private and public storage.

Chapter 9 - Updating your data model and


performing migrations
This chapter covers everything you need to know about updating your Core Data model. You
will learn about Core Data’s automatic migrations, model mapping, model versions, and more.
After understanding the basics of automatic migrations you will take a look at how you can
write your own model mappings. To top it off you will learn how you can take full control of
Core Data’s migration process by writing your own migration logic from scratch.

Chapter 10 - Debugging and profiling your


Core Data implementation
Knowing how you can use and integrate Core Data in a project is extremely useful, but knowing
how to profile and debug it can be the key to taking your code from good to great. This chapter
introduces you to some launch arguments that you can use to gain insights into what Core
Data does under the hood, as well as profiling your code with instruments. You will learn
how to use the information gained from Core Data’s logging and Instruments to improve and
optimize your Core Data code and the user’s experience.

Chapter 11 - Using Core Data in your unit


tests
I firmly believe that every developer should write unit tests for their code whenever they
can. In this chapter I provide some guidance on how you can correctly set up and use a Core

Donny Wals 11
Practical Core Data

Data store in your unit tests. This will allow you to write your unit tests in isolation without
interfering with each other by setting up a separate, temporary, store for each unit test.

Chapter 12 - Where to go from here?


This book should set you up for a successful Core Data implementation in your applications.
You learned Core Data’s basics in the first couple of chapters and moved on to more complex
use cases and concepts in later chapters. And while I’ve done my best to cover a lot, there is
always more to learn. In this chapter, I will recommend articles, books, and videos that I think
are useful to look at if you want to learn more about Core Data when you’re done reading this
book.

Donny Wals 12
Practical Core Data

Chapter 1 - Taking your first steps with


Core Data
Chapter one, the start of something new. You’re going to start your Core Data adventure right
here, in this chapter. In this first chapter, I will show you lots of different things. Some will
make sense right away, others will need some time to sink in.
My goal for this first chapter is to get you familiar with Core Data. I want you to see a lot of what
makes Core Data interesting, and how you can use it. You will gain more in-depth knowledge
in the chapters to come. For now, let’s get started with a birds-eye view of Core Data, and how
it can be used in an application.
In this chapter you will learn about the following topics:

• Creating a new project that uses Core Data


• Defining a simple Core Data entity
• Adding new records to a Core Data store
• Retrieving records from your store
• Modifying and deleting records

By the end of this chapter, you will have learned a lot of Core Data basics, and you will have a
solid foundation to build upon in the rest of this book.

Creating a project that uses Core Data


The easiest way to get started with Core Data is to have Xcode add Core Data to your project
from the get-go. And while there’s nothing inherently wrong with letting Xcode generate Core
Data code for you, I would like to walk you through adding Core Data to a new project yourself.
My reasoning for this is twofold:

1. It’s good to see that there’s no magic involved in adding Core Data to a project.
2. The differences between the generated code in SwiftUI and UIKit projects can be con-
fusing and would make it much harder for me to write this chapter.

Donny Wals 13
Practical Core Data

I’d like to expand on my second point a little bit because I can already hear you think “Donny,
you’re supposed to explain the confusing parts. Not hide them.”
You’re right. I wrote this book to take away a lot of the confusion that surrounds Core Data.
Believe me when I say that adding Core Data to a project by hand is a great way to reduce
confusion. You will understand exactly what’s going on in the generated code for both SwiftUI
and UIKit since the code that Xcode generates for each is nothing more than a different
implementation of the same principle. The approach that I’ll show you in this chapter is very
similar to the one that’s used in Xcode’s SwiftUI template and can be used in a UIKit project
without problems.
To follow along with this chapter, you can either create a new Xcode project yourself, or you
can take a look at the code in the Chapter 1 folder in the book’s code bundle. The code in the
bundle is the finished project so for typing along I would recommend creating a fresh Xcode
project from scratch.
Create a new project and make sure the use Core Data checkbox is unchecked. We’re not
going to add unit tests to this project so you can uncheck the unit testing checkbox as well. For
your user interface, you can use either SwiftUI or a Storyboard, it doesn’t matter much since
I’ll go over both options in this chapter. I recommend that you use whichever UI framework
you’re comfortable with (or pick the one you want to learn more about).

Donny Wals 14
Practical Core Data

Figure 1: The create new project dialog

Note: Throughout this book, I assume that you have at least basic knowledge of Xcode,
Swift, and iOS development, so I won’t explain everything every step of the way unless
it’s directly related to Core Data, or if I think the topic is obscure or advanced enough to
warrant some extra explanation.

To add Core Data to your newly created project, you need to create a new Core Data model
file. You can do this through the New File menu (File -> New -> File or cmd + N). Select the
Data Model file type from the list of files and click Create:

Donny Wals 15
Another Random Scribd Document
with Unrelated Content
XVIII LUKU.

En saata sanoa sitä juuri pahanilkeydeksi, jos valitin kammioni


kehnoutta. Onnekseni tuli toinen parempi kammio tyhjäksi, jonka
minä odottamattani sain asunnoksi.

Olihan siis syytä iloitakseni. Ja kuitenkaan… en saattanut ilman


kaipauksetta ajatella Magdalenaa. Lapsellista oli, sen myönnän, noin
pysyä kiintyneenä tuntemattomaan henkilöön, ja tosiaankin hyvin
vähäpätöisistä syistä! Lähtiessäni en voinut olla silmääni luomatta
seinään, jota vastaan niin usein olin istunut nojautuneena, sill'aikaa
kun jonkun vaaksan päässä, seinän toisella puolella, tuo vaimo
poloinen oli tehnyt samoin. Mieleni teki vielä kerran kuulla tuota
tuntehikasta värssyä:

Hyljätylle onnen ken


Tuopi jälleen entisen?

Turha toivo! Taaskin erohetki lisäksi kurjassa elämässäni.

Muuttomatkalla tervehdin kahta noista rosvoista, jotka näin


ikkunassa. Päällikkö ei ollut siinä, mutta saatuansa toisilta
viittauksen, hänkin tuli minua tervehtimään; rupesi sitten
Magdalenan värssyä laulamaan. Oliko aikomus tehdä minusta
pilkkaa? Lyönpä vetoa, että jos viideltäkymmeneltä tuota kysyisin,
niin yhdeksänviidettä vastaisi: varmaankin niin oli. Ja kuitenkin,
huolimatta ääniluvusta, olen minä taipuisa uskomaan, että tuo rosvo-
hyvä sillä luuli tekevänsä minulle mieliksi. Siksi minä sen otinkin, ja
loin hänelle kiitollisen silmäyksen; hänpä, ojentaen käsivartensa
ikkunan rautaristikosta, hattu kädessä, nyykytti vielä päätänsä
jäähyväisiksi, kun rupesin portaita alas astumaan.

Pihalle tultuani tuli minulle lohdutus. Holvin alla oli tuo pieni
mykkä. Hän tunsi minut heti ja tahtoi rientää luokseni, mutta vartijan
vaimo, en tiedä mistä syystä, kaappasi häntä kauluksesta kiinni ja
ajoi hänet sisään. Olin pahoillani siitä, ett'en saanut häntä syleillä,
mutta sen ohessa minua ilahutti hänen yrityksensä tulla luokseni.
Suloiselta tuntuu olla rakastettu!

Se oli tapauksista rikas päivä. Vähän matkaa tuosta tulin entisen


kammioni kohdalle, ja siinä seisoi Gioja. "Terve, Melchiorre!" sanoin
ohitse mennessäni. Hän kohotti päänsä, ja kääntyen minun puoleeni
huusi: "Terve Silvio!"

En saanut tuokiotakaan seisahtua. Käännyttiin porttikäytävään,


noustiin toiseen kerrokseen; ja nyt sain asunnoksi siivon huoneen,
aivan Giojan yläpuolella.

Kun sänkyni oli tuotu sisään ja minä jäin yksikseni, rupesin


huoneen seiniä tarkastelemaan. Siihen oli piirretty muistokirjoituksia,
mitkä lyijykynällä, mitkä hiilellä, mitkä piirtimellä. Minua viehätti pari
ranskalaista värssyä, joita mielipahakseni en ole pannut muistiin.
Kirjoituksen alla oli nimi Normandian herttua. Koetin niitä laulaa
samalla nuotilla, kuin Magdalena säkeitänsä; silloinpa kuului varsin
läheltä ääni, joka lauloi niitä aivan toiseen tapaan. Kun tuo ääni
vaikeni, niin huusin: "Hyvin!" Ja seinäntakainen henkilö tervehti
minua kohteliaasti, kysyen, olinko ranskalainen.

— En, olen italialainen, Silvio Pellico nimeltä.

— Francesca da Rimini'n tekijä?

— Aivan niin. —

Nyt hän lausui minulle kunnioitustansa ja samassa sääliänsä siitä,


että olin vankeudessa. Sitten hän kysyi, mistä seudusta olin kotoisin.

— Piemontista, vastasin; olen Saluzzolainen.

Taas muutamia kohteliaita sanoja Piemontilaisten mielenlaadusta


ja nerosta, sekä merkillisistä Saluzzossa syntyneistä miehistä, ennen
kaikkia Bodonis'ista.

Kaikki lausuttiin semmoisella hienoudella, joka todisti miehen


saaneen hyvän kasvatuksen.

— Ehkä minullekin sallittanee, sanoin minä vuorostani, kysyä, kuka


te olette?

— Te lauloitte vast'ikään minun tekemääni runoa.

— Ne ovat siis teidän tekemänne, nuo sievät värssyt?

— Ovat.

— Olette siis…

— Normandian onneton herttua.


XIX LUKU.

Nyt vartija kävi ikkunaimme alla ja katkaisi puheemme.

Mikä onneton Normandian herttua? arvelin itsekseni. Eiköhän


samaa arvonimeä annettu Ludvig XVI:nen pojalle? Mutta se
lapsiparka varmaan ei enään elä. — Olkoonpa niin, naapurini täällä
on luultavasti yksi noita poloisia, jotka ovat koettaneet herättää
hänet kuolleista.

Useat ovat jo väittäneet itseänsä Ludvig XVII:neksi, vaan heidät


kaikki on pettureiksi näytetty; mitä suurempaa luottamusta voisi
tämä saavuttaa?

Vaikka koetinkin olla tästä asiasta mitään päätöstä tekemättä,


pysyi kumminkin voittamaton uskottomuus minussa vallallaan ja on
yhä minuun jäänyt. Yhtähyvin en tahtonut miesraukkaa loukata, mitä
juttuja hän aikoikin ladella.

Tuokion kuluttua hän taas rupesi laulamaan, sitten jatkoimme


puhettamme.

Kysymykseeni, kuka hän oikeastaan oli, hän vastasi olevansa


todellakin Ludvig XVII:s, ja hän parjasi kovasti setäänsä Ludvig
XVIII:tta, joka oli hänen oikeutensa anastanut.

— Mutta miks'ette Restaurationin aikana saattaneet oikeuksianne


kuuluviin?

— Silloin olin kuoleman kynsissä Bolognassa. Heti taudista


toinnuttuani kiiruhdin Pariisiin ja esitin itseni korkeille valloille; mutta
tehtyä ei voitu muuttaa enää, oikeutta rikkova setäni kieltäytyi minua
tunnustamasta sukulaisekseen, ja sisareni yhtyi häneen
kukistaakseen minua. Ainoastaan tuo oiva ruhtinas de Condé otti
minut avo-sylin vastaan, vaan hänen ystävyytensä ei mitään
auttanut. Eräänä päivänä hyökkäsi Pariisin kadulla muutamia
salamurhaajia tikarit kädessä päälleni, ja töin tuskin pääsin hengissä
heidän käsistänsä. Matkustettuani jonkun aikaa sinne tänne
Normandiassa, palasin Italiaan ja asetuin Modenaan. Sieltä
kirjoittelin lakkaamatta kirjeitä Europan hallitsijoille, erittäin keisari
Aleksanterille, joka aina vastasi mitä suurimmalla kohteliaisuudella;
enkä ollut ilman toivoa, että oikeus vihdoin voittaisi, taikkapa, jos
politiikista tahdottiin maahan polkea perillis-oikeuttani Ranskan
kruunuun, minulle ainakin suotaisiin kohtuullinen elatusraha. Mitäpä
vielä! Minä otettiin kiinni, vietiin Modenan herttuakunnan rajalle ja
jätettiin Itävallan hallituksen haltuun. Nyt olen jo kahdeksan
kuukautta ollut täällä haudattuna, ja ties Jumala, milloin täältä olen
pääsevä!

En uskonut kaikkea, mitä hän sanoi. Mutta että hän täällä oli kuin
haudattuna, se oli semmoinen totuus, joka herätti minussa
myötätuntoisuutta.

Pyysin häntä lyhyesti kertomaan elämäänsä. Suurella tarkkuudella


hän tiesi kertoa pienimmätkin seikat, joita minäkin tunsin Ludvig
XVII:nen lapsuudesta, kun hän annettiin tuon konnamaisen suutarin
Simon'in hoteisin, kun häntä vieteltiin todistamaan pahanilkeätä
kannetta oman äitinsä, kuningatar raukan, elämäntapoja vastaan
j.n.e. Ja vihdoin että, kun hän oli vankilassa, tuli eräänä yönä
miehiä, jotka veivät hänet pois, jättäen hänen sijaansa tylsämielisen
lapsen, nimeltä Mathurin. Kadulla odottivat neljällä hevosella
valjastetut vaunut, ja yksi hevosista oli vaan puuhepo, johon hän
pantiin piiloon. He pääsivät vastuksitta Rhein-virralle, ja rajan ylitse
tultua, tuo kenraali… (hän mainitsi hänen nimensäkin, vaikk'en sitä
muista), joka oli hänet pelastanut ja jonkun ajan oli hänelle
opettajana ja isänä, sitten lähetti tai vei itse hänet Amerikaan. Siellä
nuorukainen, kuningas ilman valtakunnatta, sai kokea monta
vaihetta, erämaissa kärsiä nälkää, olla sotamiehenä, elää
kunnioitettuna ja onnellisna Brasilian kuninkaan hovissa, joutua
panettelun alaiseksi ja ahdistettuna maanpakolaisena lähteä mieron
tielle, palattuansa Europaan Napoleon'in vallan loppuaikana, hän
vangittiin Napolissa Murat'in toimesta, ja kun vihdoin vapaana aikoi
saattaa perillis-oikeuksiansa kuuluviin, niin kohtasi häntä Bolognassa
tuo onneton taudin isku, jonka kestäessä Ludvig XVIII:s kruunattiin
Ranskan kuninkaaksi.
XX LUKU.

Tätä kaikkea hän kertoi kummallisen todennäköisesti. Vaikk'en


saattanut uskoa hänen sanojaan, ihmettelin häntä sittenkin. Kaikki
Ranskan vallankumouksen seikat olivat hänelle perinpohjin tunnetut,
ja hän puhui niistä luonnollisella puhetaidolla, lisäten joka paikassa
mitä hauskimpia juttuja. Hänen puheensa oli hiukan soturin tapaan,
mutta kuitenkaan se ei ollut sitä luontevuutta vailla, jota hieno seura
tuottaa mukanaan.

— Suvaitsetteko, kysyin, että puhun suoraan, arvonimiä


käyttämättä?

— Se on juuri minulle mieleen, vastasi hän. Ainakin sen on


onnettomuus minulle opettanut, että voin nauraa kaikelle
turhuudelle. Olkaa varma siitä, että pidän parempana olla ihminen,
kuin kuningas.

Aamuin illoin puhuimme aina yhdessä; ja huolimatta siitä, mitä


mielestäni hänessä oli naurettavaa, näytti minusta siltä, kuin hänellä
olisi ollut hyvä, puhdas ja kaikkea hyvää harrastava sydän. Usein olin
vähällä hänelle sanoa: — Antakaat anteeksi, minä tahtoisin kyllä
mielelläni uskoa teidän olevan Ludvig XVII:s, mutta minun täytyy
suorasti tunnustaa, että vastapäinen vakuutus on minussa vallallaan;
ettekö teeskentelemättä voisi luopua tuosta luulotuksesta? — Ja
itsekseni sepitin häntä varten aika saarnan kaikkien valheitten
mitättömyydestä, niidenkin, jotka näyttävät viattomilta.

Päivä päivältä lykkäsin saarnan pitämisen tuonnemmaksi, yhä


odottaen, kunnes tuttavuutemme vielä hiukan varttuisi; enkä
koskaan tullut sitä toimeen panneeksi.

Ajatellessani tätä pelkurimaisuutta, puolustan sitä toisinaan sillä,


että se muka oli välttämätön kohteliaisuus, kiitettävä
hienotunteisuus, ja milloin milläkin tapaa. Mutta tänkaltaiset tekosyyt
eivät riitä, enkä voi itseltäni salata, että olisin tyytyväisempi, jos
todellakin tuo saarna olisi tullut pidetyksi. Sillä ken valhetta on
uskovinansa, hän on pelkuri; ja siihen en enää tahdo tulla syypääksi.

Niin, pelkuri! Totta on että, vaikka kuinkakin kauniisti olisi


edeltäpäin puhunut, niin aina on vaikea lopulla sanoa: "En usko
teitä." Toinen suuttuu, muuttuu ystävästä vihamieheksi, ehkäpä
soimaa sinua suunnattomasti. Mutta ystävänkin menettäminen on
valhetta parempi. Ja kukaties tuo kurja, nähtyänsä, ett'et usko
hänen valhettansa, sitten salaa kunnioittaisi vilpittömyyttäsi, ja siitä
saisi aihetta miettimiseen ja kääntyisi paremmalle uralle.

Vartijat olivat taipuvaiset luulemaan, että hän todellakin oli Ludvig


XVII:s, ja koska kokemuksesta tiesivät elämän olevan täynnä
muutoksia, he toivoivat, että hän kerran oli nouseva Ranskan valta-
istuimelle ja pitäisi silloin muistossa heidän alamaista palvelustaan.
He eivät tosin tohtineet auttaa häntä karkaamaan, mutta kokivat
muuten kaikella tavalla olla hänelle mieleen.
Sen kautta minäkin sain kunnian nähdä tämän korkean henkilön.
Hän oli vartaloltaan keskikokoinen, 40 tahi 45 vuoden ijässä,
jokseenkin lihava ja muodoltaan hyvin Bourbon'in näköinen.
Todenmukaista on, että satunnainen yhdennäköisyys oli vietellyt
häntä noihin kurjiin tuumiin.
XXI LUKU.

Oli toinenkin seikka, jossa en voinut hyväksyä käytöstäni häntä


kohtaan. Naapurini ei ollut aivan uskoton, puhuipa toisinaan
uskonnollisuudesta kuten ihminen, joka sitä arvossa pitää eikä ole
siitä vieraantunut; mutta kuitenkin oli hänellä useampia turhia
ennakkoluuloja Kristin-uskoa vastaan, jota hän arvosteli enemmän
sen väärinkäytösten, kuin sen oikean olennon mukaan. Tuo
Ranskassa ennen vallankumousta ja sen jälkeenkin vallitseva
pintapuolinen filosofiia oli hänet so'aissut. Hän luuli, että Jumalaa voi
puhtaammin palvella, kuin evankeliumin oppia seuraamalla.
Tuntematta tarkoin Condillac'in ja Tracy'n kirjoituksia, hän piti heitä
kuitenkin mitä suurimpina ajattelijoina ja luuli, että jälkimäinen
heistä oli päässyt viisaustieteellisen tutkimuksen korkeimmalle
kukkulalle.

Minä, joka olin enemmän näitä asioita lukenut ja tunsin ne törkeät


erehdykset, joihin Voltaire'n aikakausi oli joutunut, rynnätessään
Kristin-uskoa vastaan; joka olin vakuutettuna, että järjen kannalta
katsoen on mahdotonta samalla kertaa uskoa Jumalan olemista ja
kieltää evankeliumia, ja katsoin halvaksi, että seurataan tuota
uskottomuuden virtaa, tajuamatta kuinka yksinkertaisen ihana
Kristin-usko on, ell'ei sitä irvikuvaksi väännetä; minä olin nyt niin
heikkoluontoinen, ett'en pitänyt puoltani hänelle. Naapurini
kokkapuheet hämmensivät minua, vaikka niiden mitättömyys ei
voinut jäädä minulta salaan. Peittelin uskoani, epäilin, mietin, oliko
sopivata vastustaa hänen sanojansa vai eikö, ja päätin, ett'ei se ollut
tarpeen; sillä luulin asiasta kunniallisesti pääsneeni.

Mitä heikkoutta! Tosin on tilaisuuksia, jolloin liiallinen uskon-into


on ajattelemattomuudeksi katsottava ja kenties vaan ärsyttää
uskotonta. Mutta että suoraan ja samassa kainosti tunnustamme
sen, mitä pidämme tärkeänä totuutena, että teemme sen silloinkin,
kun emme voi toivoa myöntämistä, jopa saamme kokea pilkkaakin,
se on selvä velvollisuutemme. Ja semmoinen jalo tunnustus on aina
mahdollinen tehdä, joutumatta sopimattomaan käännytyskiihkoon.
Sitä tehdessämme saatamme ehkä, niin sanoaksemme, alustaa
kuulijan mieleen pohjan totuudelle, niin että se siihen voi juurtua ja
vihdoin valollansa karkoittaa uskottomuuden pimeyden.
XXII LUKU.

Uudessa huoneessani asuin vähän toista kuukautta. Yön aikaan


Helmikuun 18 ja 19 päivän välillä (1821) herätti minut avainten
kalske ja telkien kirinä; sisään astui muutamia miehiä, lyhty muassa.
Ensimäinen ajatukseni oli, että he tulivat minua surmaamaan.
Hämmästyneenä katselin noita miehiä, kun kreivi B. lähestyi minua
ja käski kohteliaasti heti pukeumaan lähtöä varten.

Semmoista tervehdystä en ollut odottanut, ja mieleeni tunki se


turha toivo, että minä nyt vietäisiin Piemontin rajalle. — Onko
mahdollista, että tuo ankara myrsky niin väleen asettuisi? Pääsisinkö
tosiaankin vielä vapaaksi? Saisinko siis tavata isää, äitiä, siskojani?

Nämä herttaiset toiveet saivat sydäntäni tuokioksi vilkkaammin


sykkimään. Mitä kiireimmiten puettuani läksin miesten kanssa pois,
ennättämättä jättää hyvästikään naapurilleni. Luulin kuulleeni hänen
äänensä, ja olin pahoillani siitä, ett'en saanut vastata.

— Minne matkamme? sanoin kreiville, kun hänen ja erään


santarmiupseerin kanssa astuin vaunuihin.

— Ei ole lupa sanoa teille sitä, ennenkuin olemme peninkulman


matkan päässä Milanosta. —
Näin ett'emme ajaneet Vercellin porttiin päin, ja siihen sammuivat
toiveeni!

Vaikenin. Oli ihana kuutamo-yö. Katselin noita rakkaita katuja,


joilla niin monta vuotta olin onnellisna kävellyt Foscolo'n, Monti'n,
Lodovico di Breme'n, Pietro di Borsleri'n, Porro'n ja hänen poikiensa,
ja niin monen muun ystävän kanssa. Kartanot, kirkot, puutarhat,
kaikki johtivat mieleeni mitä suloisimpia nuoruuden muistoja. Nyt
kun luulin näkeväni teitä viimeisen kerran, kun teidän kuvanne niin
nopeasti pakenivat silmistäni, nytpä huomasin, kuinka olin teitä
rakastanut! Portin ulkopuolelle tultuamme, painoin hattuni alemmas
silmille ja itkin salaa.

Kun olimme kulkeneet toista peninkulmaa, niin sanoin kreiville: —


Luullakseni käy matkamme Veronaan.

— Edemmäs, vastasi hän; ajamme Veneziaan, jossa minun pitää


jättää teidät Erityis-toimikunnan haltuun. —

Me ajoimme postikyydillä, seisahtumatta, ja Helmikuun 20 p:nä


saavuimme
Veneziaan.

Edellisen vuoden Syyskuussa, kuukautta ennen vangitsemistani,


olin minä ollut Veneziassa ja suuressa ja hilpeässä seurassa
atrioinnut Luna nimisessä hotellissa. Omituinen sattumus, että minä
nytkin vietiin samaan hotelliin!

Eräs palvelija kummastui nähdessänsä minua ja samassa


huomatessansa (vaikka santarmi ja hänen kaksi seuralaistaan, jotka
olivat olevinaan palvelijoita, olivat valepuvussa), että minä olin
poliisin käsissä. Olin hyvilläni siitä, että hän minut tunsi, sillä
varmaan oli hän muillekin kertova tulostani.

Söimme päivällistä ja sitten minut vietiin Dogen palatsiin, jossa


oikeus silloin piti istuntojansa. Matkalla käytiin Procuratie-
pilarikäytävän kautta ja Florian'in kahvilan ohitse, missä olin mennä
syksynä viettänyt niin ihania iltakausia; nyt ei sattunut kukaan
tuttavistani näkyviin.

Pikkutorin (Piazzettan) yli oli mentävä… tällä torilla oli viime kerran
muuan kerjäläinen minulle lausunut seuraavat kummalliset sanat: —
Näkyy, hyvä herra, että olette muukalainen; ihmettä, kuinka te ja
muut muukalaiset ihailette tätä toria; minun mielestäni se on
onnettomuuden kotopaikka, enkä minä tule tänne muutoin kuin
pakosta.

— Onko teitä tässä kohdannut joku onnettomuus?

— On, herra, kauhea onnettomuus, eikä yksin minua. Jumala teitä


varjelkoon, herra, Jumala varjelkoon! —

Ja sillä hän minut jätti.

Nyt kun kävin täällä uudestaan, en voinut olla muistamatta


kerjäläisen sanoja. Ja juuri samalla torilla vuotta myöhemmin astuin
mestauslavalle kuuntelemaan ensin kuoleman-tuomiotani ja sitten
armahduskirjaa, jonka kautta kuolemanrangaistus muutettiin
viidentoista vuoden kovaksi vankeudeksi!

Jos luonteeni olisi mystillisyyteen taipuvainen, niin panisin suuren


arvon tuon kerjäläisen sanoille, joka niin vakavasti ennusti minulle
tämän torin olevan onnettomuuden kotopaikan. Nyt minä kerron
tämän ainoastaan kummallisena tapauksena.

Nousimme palatsiin; kreivi B. puhui tuomarien kanssa, heitti sitten


minut vankivartijan haltuun, ja hyvästi jättäessään hän liikutettuna
syleili minua.
XXIII LUKU.

Äänettömänä seurasin nyt vartijata. Useampien käytävien ja salien


läpitse tultuamme, me saavuimme ahtaille portaille, jotka veivät
meidät Lyijykamareihin, noihin kuuluisiin valtiovankiloihin Venezian
tasavallan ajoilta.

Täällä vartija pani minun nimeni kirjaansa ja sulki minut


kammiooni.

N.s. Lyijykamarit ovat entisen Dogenpalatsin yläkerros, kokonaan


lyijykatolla peitetty.

Minun kammiollani oli isonlainen ja suunnattomalla rautaristikolla


varustettu ikkuna, josta oli nähtävänä San Marco kirkon
lyijypeitteinen katto. Kirkon toisella puolen näkyi kaukaa torin ääri, ja
joka taholta lukematon joukko kupoleja ja kellotapulia. San Marcon
oma jättiläistapuli oli vaan kirkon pituuden päässä minusta, niin että
kuulin niiden ääniä, jotka sen huipussa puhuivat vähä kovemmin.
Kirkon vasemmalta puolelta näkyi myöskin osa palatsin suurta pihaa
ja yksi porteista. Sillä kohdalla on yhteinen kaivo, ja lakkaamatta
käytiin sieltä vettä ottamassa. Mutta minun korkeasta paikastani
näyttivät ihmiset tuolla alhaalla pikku lapsilta, enkä voinut heidän
sanojansa eroittaa, ell'eivät huutaneet. Yksinäisyyteni oli täällä
paljon suurempi kuin Milanossa.

Ensipäivinä kriminaalitutkinto, jota tuo Erityis-toimikunta piti


minun kanssani, synkistytti melkoisesti mieltäni, jota vankeuden ypö-
yksinäisyyskin oli masentanut. Paitsi sitä olin nyt entistä kauempana
perheestäni, enkä enään saanut uutisia kodistani. Ne oudot kasvot,
jotka täällä näin, tosin eivät olleet minulle vastenmielisiä, vaan niiden
yksivakaisuus näytti melkein säikähdyttävältä. Huhu oli heille liikoja
ladellut Milanolaisten ja muitten Italialaisten vapauden-hankkeista; ja
nyt he luulivat, että minä ehkä olin yksi noiden muka mielettömien
tuumien pahimpia päämiehiä. Vähäinen kirjailijan-maineeni oli tuttu
vartijalle, hänen vaimollensa ja pojillensa, jopa kahdelle
alavartijallekin, joilla kaikilla näytti olevan joku hämärä ajatus, että
surunäytelmäin kirjoittaja on jotakin silmänkääntäjän tapaista.

He pysyivät yksitotisina, luulevaisina, ja kuitenkin täynnä halua


saada minusta enemmän selkoa; muutoin hyvin kohteliaina.

Muutamien päivien perästä he kävivät kaikki leppeämmiksi, ja


minä heihin miellyin. Vaimo säilytti kauvimmin tuota vankivartijalle
omituista käytöstä ja arvoa. Hän oli noin 40 vuotias, kasvoiltaan
kuiva kuten puheessaankin, eikä näyttänyt vähintäkään suosiotansa
muille kuin lapsillensa.

Hän toi minulle kahvia aamuisin ja päivällisen jälkeen, vettä,


liinavaatetta j.n.e. Hänen seurassaan oli tavallisesti 15 vuotias tytär,
rumanpuolinen mutta suopeamuotoinen, ja kaksi poikaa, toinen 13,
toinen 10 vuoden vanha. He läksivät pois myös äidin kanssa, mutta
ovesta nuo lapset ystävällisesti loivat silmänsä taakse minuun. Vartija
itse kävi luonani, ainoastaan kun hänen piti saattaa minut saliin,
missä Erityis-toimikunta istui. Alavartijat tulivat harvoin, heillä kuin
oli hoteissaan alakerroksen poliisivankila, joka oli täynnä rosvoja.
Toinen heistä kävi jo kahdeksatta vuosikymmentä, mutta pystyi yhä
vielä tuohon vaivaloiseen toimeen, juosten portaita ylös alas eri
vankihuonetten välillä. Toinen oli taas noin 25 vuotuinen
nuorukainen, joka mielemmin kertoi lempijuttujaan, kuin hoiti
tointansa.
XXIV LUKU.

Oi, raskaaksi käy kriminaalitutkinto valtiorikoksesta syytetylle!


Peljäten muita vahingoittaa, täytyy kamppailla tuhatta syytöstä ja
epäluuloa vastaan. Ja ell'ei tutkinto pian pääty, niin kaikki helposti
takertuu yhä onnettomammaksi, sillä saattaahan tapahtua, että
muita otetaan kiinni, ja uusia varomattomuuksia tulee ilmi, joita
tuntemattomat, vaan samaan lahkokuntaan kuuluvat henkilöt ovat
tehneet.

Olen päättänyt olla politiikista puhumatta, ja sentähden jääkööt


kaikki tuon tutkinnon seikat sillensä. Sen vaan sanon, että usein,
seisottuani pitkiä tuntikausia tuomarien edessä, palasin huoneeseni
niin katkeroittuneena, niin vihan vimmassa, että olisin tehnyt lopun
itsestäni, ell'ei uskonnon ääni ja vanhempieni muisto olisi mua
pidättänyt.

Poissa oli nyt se tyynimielisyys, jonka luulin Milanossa


saavuttaneeni. Useampia päiviä en voinut sitä jälleen saavuttaa; ne
olivat kadotuksen, paholaisen päiviä. Silloin herkesin rukoilemasta,
epäilin Jumalan oikeutta, kiroilin ihmisiä ja koko maailmaa, sekä
suosittelin mielessäni jos joitakin viisastelemisia hyvien avujen
turhuudesta.
Onneton ja vimmaan joutunut ihminen on ihmeen kekseliäs
herjaamaan lähimmäisiänsä ja itse Luojaakin. Viha on
epäsiveellisempi, rikoksellisempi kuin luullaan. Aamusta iltaan tosin
ei jaksa raivoa viikkokausien aikaa, ja pahimmankin vimman valtaan
vaipunut henki tarvitsee lepohetkiänsä. Mutta näillä loma-ajoillakin
tuntee entisen epäsiveellisyyden maininkia. Luulee olevansa
rauhoitettu, vaan se on petollinen, jumalaton rauha, lemmettömyyttä
ja ivaa täynnä.

Semmoisessa mielentilassa minä saatoin tuntikausia laulaa, laskea


leikkiä kaikkien kanssa, jotka tulivat minua katsomaan, ja koetin
yleensä asioita punnita ja arvostella tuolla kyyniläisellä markkina-
viisaudella. Kauan ei tämä kurja mielentila kuitenkaan kestänyt,
kuusi tai seitsemän päivää.

Raamattuni oli tomun peitteessä. Yksi vartijan pojista sanoi minua


hyväillessänsä: — Siitä kun herkesitte tuota kirja-raiskaa lukemasta,
niin surumielisyytenne näyttää vähentyneen.

— Näyttääkö niin? — vastasin.

Otin kirjan, pyyhkäsin tomun pois, ja avattuani sen umpimähkään,


seuraavat sanat sattuivat silmiini: Ja sanoi opetuslapsillensa: se on
mahdoton ettei pahennukset tule; mutta voi häntä, jonka kautta ne
tulevat; se olis hänelle parempi, että myllynkivi ripustettaisiin hänen
kaulaansa, ja heitettäisiin mereen, kuin että hän jonkun näistä
pienistä pahentais.

Nämä sanat koskivat kipeästi sydäntäni, ja minä häpesin, että lapsi


siitä tomusta, jonka näki peittävän pipliaani, arvasi minun
herjenneen sitä lukemasta, sekä siitä sai sen luulon, että olin iloiseksi
muuttunut Jumalaa unhottamalla.
— Sinä veitikka! (niin puhuttelin häntä lempeästi nuhdellen ja
mielessäni surren, että olin häntä pahentanut). Se kirja ei ole mikään
raiska, ja juuri sentähden että muutamia päiviä olin sitä lukematta,
mielenlaatuni on huonontunut. Jos äitisi sallii sinun olla jonkun
hetken minun luonani, niin koenpa torjua luotani tuota pahaa mieltä;
jospa tietäisit, poikaseni, kuinka se pahe minut voittaa yksinäni
ollessani, ja juuri silloin kun kuulet minun laulavan kuin mieletön!
XXV LUKU.

Pojan mentyä minä tunsin povessani mielihyvää siitä, että minulla


taas oli raamattu kädessä, ja että olin tunnustanut tulleeni häijyksi,
kun en sitä lukenut. Tuntui niinkuin olisin antanut hyvitystä väärin
loukatulle ystävälle ja hänen kanssaan jälleen sopinut.

— Ja sinut, Jumalani, olin minä jättänyt kääntyäkseni turmion


tielle? huudahdin. Taisinko todellakin uskoa, että irvistelijäin ruma
nauru soveltuisi minun toivottomaan tilaani?

Sanomattomalla liikutuksella lausuin nämä sanat, panin raamatun


tuolille, lankesin polvilleni sitä lukemaan, ja vaikka muutoin ani
harvoin saan kyyneliä silmiini, purskahdin nyt itkuun.

Tämä itku tuntui minusta tuhannen kerran suloisemmalta, kuin tuo


äskeinen häijy nauru. Jumala oli jälleen omassatunnossani, ja minä
Häntä rakastin! Kaduin katkerasti, ett'olin voinut niin turmeltua, ja
lupasin, ett'en milloinkaan vast'edes Hänestä luopuisi.

Ihme, kuinka vilpitön kääntymys uskonnon turviin lohduttaa ja


ylentää ihmishenkeä!
Luin ja itkin toista tuntia; sitten nousin ylös, varmaan luottaen
siihen, että Jumala oli luonani ja oli minulle antanut mielettömyyteni
anteeksi. Uudestaan kova kohtaloni, tutkinnon tuska ja tuo uhkaava
hirsipuu näyttivät vähäpätöisiltä. Iloni oli kokea kärsimystä, koska
siinä saisin tilaisuutta täyttää velvollisuuteni ja tottelevaisesti taipua
Herran tahtoon.

Raamattua, kiitos Jumalan, taisin jälleen lukea! En sitä enään


arvostellut Voltaire'n halpaan tapaan, pilkaten lauseita, joita ei katso
naurettavaksi tahi vääräksi muu kuin se, joka tietämättömyydestä
tahi pahasta tahdosta ei huoli niiden todelliseen merkitykseen
tunkeutua, vaan pintapuolisesti viipyy muutamissa kirjoitustavan
vaillinaisuuksissa. Tämän kirjan etevyys Koran'in ja Indian uskonopin
rinnalla on vastustamaton, ja mieletöntä on ajatella, että semmoinen
kunnioitettavani kirjoitusten kokoelma olis luotettavaa alkuperää
vailla. Tajusin selvään, että se on pyhyyden ja siis totuudenkin kirja.

Löytyy tosin niitä, jotka ovat pyhää Raamattua väärin käyttäneet,


hakien siitä tu'etta omille himoillensa. Vaan mitäpä ihminen ei voi
väärin käyttää; onko itsessään hyvä asia sentähden hyljättävä?

Jeesus Kristus lausui: Koko laki ja profeetat supistuvat yhteen


pääkappaleesen: rakasta Jumalaa ja lähimmäistäsi. Ja siinäkö ei olisi
ikuisiksi ajoiksi kelpaava totuus, siinäkös ei pyhän hengen
ijankaikkisesti elävä sana?

Näin mietiskelin, ja uudistin jo ennen tekemäni päätöksen sovittaa


uskontoon kaikki ajatukseni ja harrastukseni, ihmisrakkauteni,
isänmaanrakkauteni, sanalla sanoen kaikki sieluni tunteet.

Nuo harvat kyyniläisyyden houreissa kuluneet päivät olivat


kuitenkin jo ennättäneet minua saastuttaa, ja kauan taistelin
mielessäni niiden vaikutuksia vastaan. Milloin vaan ihminen jollakin
tavoin antautuu tuohon järkeä häväisevään kiusaukseen, joka
saattaa häntä tarkastamaan Jumalan töitä irvistelyn saastaisella
suurennuslasilla sekä luopumaan rukousten siunaavaisesta
harjoituksesta, silloin se turmelus, joka siitä syntyy hänen
järjessänsä, vaikuttaa, että hän yhä vähemmällä taaskin lankee
samaan turmioon. Viikkokausien kuluessa tuo kiusaus teki melkein
joka päivä rynnäkköjänsä, ja minun täytyi ponnistaa kaikki henkeni
voimat päästäkseni niistä vapaaksi.
XXVI LUKU.

Kun tämä mielentaistelu vihdoin taukosi, ja minä luulin taas olevani


vakavalla pohjalla, niin että kaikissa harrastuksissani annoin
Jumalalle kunnian, niin tunsin jonkun aikaa mitä suloisinta rauhaa.
Nuo oikeuden tutkinnot, joita minun kanssani pidettiin joka toinen
tahi kolmas päivä, niin tuskallisia kuin ne olivatkin, eivät pysyväisesti
häirinneet mieltäni. Koetin vaan olla varoillani, jott'en rikkoisi kunnian
ja ystävyyden velvollisuuksia, jättäen kaiken muun Jumalan haltuun.

Sillä välin yksinäisyyteni kävi yhä täydellisemmäksi. Nuo vartijan


kaksi poikaa, joista minulla joskus ennen oli ollut seuranhuvitusta,
pantiin kouluun, ja nyt kun saivat hyvin vähän olla kotona, he eivät
enää käyneet minun luonani. Äiti ja tytär, jotka, niin kauan kuin pojat
olivat muassa, usein olivat jääneet hetkeksi juttelemaan minun
kanssani, nekään eivät siitä lähtein muuta kuin pistäyneet sisään
kahvia tuodaksensa. Äitiä en tosin paljoa kaivannut, tyly kuin oli
käytökseltään. Mutta tyttärellä, vaikka olikin rumanpuolinen, oli
jotakin silmissä ja puheessa, joka minua miellytti. Kun hän toi
minulle kahvia ja sanoi: "tämän olen minä keittänyt", niin kahvi aina
tuntui oivalliselta. Mutta kun sanoi: "tämän äiti keitti", niin se oli kuin
lämmintä vettä.
Koska minä harvoin sain nähdä ihmisiä, niin käänsin huomiotani
muutamiin muurahaisiin, jotka tulivat ikkunalleni, ja syötin niitä
runsaasti. Nepä menivät ja toivat lukemattomia tovereita pitoihin,
niin että ne melkein peittivät ikkunan. Samoin katselin erästä
hämähäkkiä, joka kutoi verkkoansa seinään. Syötin sitä kärpäsillä ja
hyttisillä, josta se niin kesyi, että laskeutui vuoteelleni ottamaan
saalista sormeltani.

Jospa nämä olisivat olleet ainoat hyönteiset, jotka kävivät minua


tervehtimässä! Oli vielä kevät-aika, ja kuitenkin eneni jo hyttisten
luku hirveässä määrässä. Talvi oli ollut erittäin lauhkea, ja, vähän
aikaa tuultua Maaliskuussa, lämpimät ajat seurasivat. Pian kammioni
muuttui uuninkuumaksi, se kun oli suoraan etelään päin, lyijykaton
alla ja aivan San Marco-kirkon lyijypeitteisen katon vieressä, josta
auringon säteet hirveällä voimalla kimmahtivat takaisin: olin vähällä
tukehtua. Semmoisesta kuumuudesta ei ollut minulla ennen ollut
aavistustakaan. Tuli nyt lisäksi hyttiset, jotka, vaikka kuinka heitä
hosuin ja tapoin, minut tuiki peittivät. Sänky, pöytä, tuoli, lattia,
seinät, kaikki oli niitä täynnä, ja ikkunan kautta pyrki kuhisten
edestakaisin lukemattomia laumoja. Niiden puremat ovat kipeät, ja
kun näitä saapi aamusta iltaan ja illasta aamuun, ja yhäti täytyy
miettiä keinoja vihollisten luvun vähentämiseksi, niin kärsii paljon
sekä ruumiillisesti että hengellisesti.

Kun kärsin tätä kauheata vitsausta enkä kuitenkaan saanut


muuttaa toiseen huoneesen, tulin itsemurhaa ajatelleeksi, ja menin
tuontuostakin milt'ei mielipuoleksi. Mutta, taivaalle kiitos, ne houreet
haihtuivat pian, ja uskossani sain tuetta, jopa tunsin jonkinmoista
miellykkiäkin kärsimyksessä.
Arvelin näin: — Kuta katkerammaksi elämäni muodostuu, sitä
vähemmän peloittaa minua, niin nuori kuin olenkin, tuo uhkaava
kuolemantuomio. Ell'ei näitä kärsimyksiä edeltäpäin olisi, niin kuolisin
ehkä pelkurin tavoin. Paitsi sitä, mitä olen tehnyt ansaitakseni
onnellisuutta? Missä on ansioni?

Ja kun oikein otin tarkastellakseni mennyttä elämääni, enpä


löytänyt kuin harvoja välttävän hyviä kohtia; muuten vaan typeriä
himoja, epäjumaluutta, pöyhkeilevää ja ulkokullattua kuntoa. —
Mitäpä muuta siis, niin päätin, kuin kärsi, kelvoton! Jos ne sun
tappavat, ihmiset tahi hyönteiset, vaikkapa vihasta ja vääryydellä,
niin älä nurise, vaan muista, että ne ovat taivaallisen oikeuden
välikappaleita!

You might also like