CKRecordZone
A CKRecordZone объект определяет область для организации связанных записей в базе данных. Зоны являются важной частью того, как Вы организуете свои данные. Общедоступные и частные базы данных имеют единственную зону по умолчанию, и в частной базе данных можно создать дополнительные пользовательские зоны по мере необходимости. Используйте пользовательские зоны, чтобы расположить и инкапсулировать группы связанных записей в частной базе данных. Пользовательские зоны поддерживают другие возможности также, такие как возможность записать многократные записи как единственную атомарную транзакцию.
Обработайте каждую пользовательскую зону как единый блок данных, которые являются отдельными от любой зоны в базе данных. В зоне Вы добавляете записи, как Вы были бы где-либо еще. Можно также создать ссылки между записями в зоне при помощи CKReference класс. Однако CKReference класс не поддерживает соединение перекрестной зоны, таким образом, каждый ссылочный объект должен указать на запись в той же зоне как текущая запись.
Используйте CKRecordZone класс как есть и не разделяет на подклассы.
Взаимодействие с рекордными зонами
По большей части Вы используете экземпляры этого класса, чтобы создать и управлять пользовательскими зонами. Несмотря на то, что можно использовать этот класс для получения зоны базы данных по умолчанию, большей части действия операций на записях в зоне по умолчанию по умолчанию, таким образом, редко необходимо указывать его явно.
Для создания пользовательской зоны создайте зональный объект с помощью этого класса, и затем сохраните ту зону к частной базе данных пользователя с помощью a CKModifyRecordZonesOperation объект. Необходимо создать пользовательский зональный объект и сохранить его к базе данных, прежде чем можно будет сохранить любые записи в той зоне. При создании записей явно укажите зону ID, если Вы хотите, чтобы записи находились в определенной зоне. Вы не можете создать пользовательские зоны в общедоступной базе данных.
После создания a CKRecordZone объект и сохранение его к базе данных, Вы не взаимодействуете с объектом очень. Вместо этого большинство взаимодействий происходит с его связанным CKRecordZoneID объект, который Вы используете для обращения к зоне при создании записей.
Соответствует
-
AnyObject -
CVarArgType -
Сопоставимый -
Hashable -
NSCoding -
NSCopying -
NSObjectProtocol -
NSSecureCoding -
Печатаемый -
NSCopying -
NSObject -
NSSecureCoding
Оператор импорта
Swift
import CloudKit
Objective C
@import CloudKit;
Доступность
Доступный в OS X v10.10 и позже.
-
Возвращает зону по умолчанию для записей.
Объявление
Swift
class func defaultRecordZone() -> CKRecordZone!Objective C
+ (CKRecordZone *)defaultRecordZoneВозвращаемое значение
Рекордная зона по умолчанию для базы данных.
Обсуждение
Всегда используйте этот метод для получения зоны по умолчанию для базы данных. Возвращенный объект может использоваться для указания зоны по умолчанию или для общедоступной или для частной базы данных контейнера. Вы не должны сохранять возвращенный зональный объект перед использованием его. Владелец зоны установлен в
CKOwnerDefaultName, который соответствует текущему пользователю.Зона по умолчанию базы данных является удобным местом, чтобы сохранить и получить доступ к записям. Каждый раз, когда Вы явно не присваиваете зону записи, CloudKit помещает запись в зону по умолчанию.
Недостаток использования зоны по умолчанию для хранения записей - то, что это не имеет никаких специальных возможностей. Вы не можете сохранить группу записей на iCloud атомарно в зоне по умолчанию. Точно так же Вы не можете использовать a
CKFetchRecordChangesOperationобъект на записях в зоне по умолчанию.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Инициализируйте и возвратите рекордный зональный объект с указанным именем.
Объявление
Swift
init!(zoneNamezoneName: String!)Objective C
- (instancetype)initWithZoneName:(NSString *)zoneNameПараметры
zoneNameИмя новой зоны. Имена зон в частной базе данных пользователя уникальны, состоят из символов ASCII, больше не, чем 255 символов и не запускаются с подчеркивания (
_) символ. Один способ гарантировать уникальность имен зон состоит в том, чтобы создать строку на основе UUID, но можно также использовать другие методы.Если этот параметр
nilили пустая строка, метод выдает исключение.Возвращаемое значение
Новая пользовательская зона или
nilесли не может быть создана зона.Обсуждение
Используйте этот метод для создания новой рекордной зоны. Новая зона имеет имя, которое Вы обеспечиваете, и владелец зоны установлен в текущего пользователя. После создания зоны сохраните его к серверу с помощью a
CKModifyRecordZonesOperationвозразите илиsaveRecordZone:completion:методCKDatabaseкласс. Необходимо сохранить зону к серверу прежде, чем попытаться сохранить любые записи на ту зону.Не используйте этот метод для создания a
CKRecordZoneобъект, соответствующий зоне, уже существующей в базе данных. Если зона существует, выберите ее с помощью aCKFetchRecordZonesOperationвозразите илиfetchRecordZoneWithID:completion:методCKDatabaseкласс.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Инициализируйте и возвратите рекордный зональный объект с помощью указанного ID.
Объявление
Swift
init!(zoneIDzoneID: CKRecordZoneID!)Objective C
- (instancetype)initWithZoneID:(CKRecordZoneID *)zoneIDПараметры
zoneIDID для новой зоны. Этот параметр не должен быть
nil.Возвращаемое значение
Новая пользовательская зона или
nilесли не может быть создана зона.Обсуждение
Используйте этот метод, когда Вы захотите создать новую рекордную зону на основе информации в зоне ID. После создания зоны сохраните его к серверу с помощью a
CKModifyRecordZonesOperationвозразите илиsaveRecordZone:completion:методCKDatabaseкласс.Не используйте этот метод для создания a
CKRecordZoneобъект, соответствующий зоне, уже существующей в базе данных. Если зона существует, выберите ее с помощью aCKFetchRecordZonesOperationвозразите илиfetchRecordZoneWithID:completion:методCKDatabaseкласс.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Уникальный идентификатор зоны. (только для чтения)
Объявление
Swift
var zoneID: CKRecordZoneID! { get }Objective C
@property(nonatomic, readonly, strong) CKRecordZoneID *zoneIDОбсуждение
Зона ID содержит имя и информацию о владельце для зоны. Используйте это свойство для получения любого из тех значений.
Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
возможности возможностиСвойствоВозможности поддерживаются зоной. (только для чтения)
Объявление
Swift
var capabilities: CKRecordZoneCapabilities { get }Objective C
@property(nonatomic, readonly, assign) CKRecordZoneCapabilities capabilitiesОбсуждение
Сервер определяет возможности зоны и устанавливает значение этого свойства при сохранении рекордной зоны. Всегда проверяйте это свойство прежде, чем выполнить задачи, требующие определенной возможности.
Как правило, зоны по умолчанию не поддерживают специальных возможностей. Пользовательские зоны в частной базе данных обычно поддерживают все опции.
Для получения дополнительной информации о том, что можно сделать с определенными возможностями, посмотрите
“CKRecordZoneCapabilities”.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Константы, указывающие специальные возможности, поддерживаются зоной.
Объявление
Swift
struct CKRecordZoneCapabilities : RawOptionSetType { init(_rawValue: UInt) init(rawValuerawValue: UInt) static var FetchChanges: CKRecordZoneCapabilities { get } static var Atomic: CKRecordZoneCapabilities { get } }Objective C
typedef enum CKRecordZoneCapabilities : NSUInteger { CKRecordZoneCapabilityFetchChanges = 1 << 0, CKRecordZoneCapabilityAtomic = 1 << 1, } CKRecordZoneCapabilities;Константы
-
FetchChangesCKRecordZoneCapabilityFetchChangesВозможность, позволяющая Вам выбирать только измененные значения в записях.
Эта возможность делает создание оффлайновых кэшей более эффективным. Вместо того, чтобы выбрать всю запись каждый раз, используйте a
CKFetchRecordChangesOperationвозразите для выборки только значений, изменившихся, и используйте возвращенные данные для обновления кэшей. Выполнение так минимизирует объем данных, который Вы получаете от сервера. Можно все еще выбрать всю запись с помощью aCKFetchRecordsOperationвозразите, хотите ли Вы.Доступный в OS X v10.10 и позже.
-
AtomicCKRecordZoneCapabilityAtomicВозможность, позволяющая изменения в многократных записях быть сделанной атомарно. Когда Вы используете a
CKModifyRecordsOperationвозразите для сохранения записей, если сервер неспособен сохранить изменения для одной записи, он не сохраняет изменения ни для одной из записей. Когда объединено сCKRecordSaveIfServerRecordUnchangedполитика объекта операции, это поведение препятствует тому, чтобы Ваше приложение перезаписало изменения в группе записей, если одна из записей была изменена в другом месте.Доступный в OS X v10.10 и позже.
Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
-
Имя зоны по умолчанию.
Объявление
Swift
let CKRecordZoneDefaultName: NSString!Objective C
NSString * const CKRecordZoneDefaultName;Константы
