NSUbiquitousKeyValueStore
Используйте хранилище значения ключа iCloud для создания предпочтения, конфигурации и доступных данных состояния приложением к каждому экземпляру приложения на каждом устройстве подключенными к учетной записи iCloud пользователя. Можно сохранить скалярные значения такой как BOOL
, а также значения, содержащие любые из типов объектов списка свойств: NSNumber
, NSString
, NSDate
, NSData
, NSArray
, и NSDictionary
.
Изменяется Ваши записи приложения к значению ключа хранят объект, первоначально сохранены в памяти, затем записанной в диск системой в подходящее время. Если Вы пишете в значение ключа, хранят объект, когда пользователь не подписывается в учетную запись iCloud, данные хранятся локально до следующей возможности синхронизации. Когда пользователь подписывается в учетную запись iCloud, система автоматически согласовывает Ваши локальные, дисковые ключи и значения с теми на сервере iCloud.
Любое устройство, выполняющее Ваше приложение, и присоединенный к той же учетной записи iCloud, может загрузить изменения значения ключа в iCloud. Для отслеживания такие изменения зарегистрируйтесь для NSUbiquitousKeyValueStoreDidChangeExternallyNotification
уведомление во время запуска приложения. Затем получите ключи и значения от iCloud (который может быть более новым, чем те, которые локальны) путем вызова synchronize
метод. Вы не должны вызывать synchronize
метод снова во время жизненного цикла Вашего приложения, если Ваш проект приложения не требует быстрой-поскольку-возможный загрузки на iCloud после изменения значения.
Для получения дополнительной информации о принятии хранения значения ключа в Вашем приложении посмотрите Разработку для Данных Значения ключа в iCloud в Руководстве по проектированию iCloud.
Избегайте использования этого класса для данных, которые важны для поведения Вашего приложения когда оффлайн; вместо этого, храните такие данные непосредственно в базу данных значений по умолчанию локального пользователя.
Общая сумма пространства, доступного в хранилище значения ключа Вашего приложения, для данного пользователя, составляет 1 МБ. Существует предел размера на значение ключа 1 МБ и максимум 1 024 ключей. При попытке записать данные, превышающие эти квоты, сбои попытки записи и никакое изменение сделан к Вашему хранению значения ключа iCloud. В этом сценарии система отправляет NSUbiquitousKeyValueStoreDidChangeExternallyNotification
уведомление с причиной изменения NSUbiquitousKeyValueStoreQuotaViolationChange
.
Максимальная длина для строк ключа для хранилища значения ключа iCloud составляет 64 байта с помощью кодирования UTF8. Попытка записать значение в ключ большей длины называет результаты в ошибке периода выполнения.
Для использования этого класса необходимо распределить приложение через App Store или App Store Mac, и необходимо запросить com.apple.developer.ubiquity-kvstore-identifier
право в Вашем проекте XCode. Для больше на этом, посмотрите, Запрашивают Доступ к Хранению iCloud При помощи Прав в Руководстве по проектированию iCloud.
Этот класс не предназначен, чтобы быть разделенным на подклассы.
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращается совместно используемое значение ключа iCloud хранят объект.
Объявление
Swift
class func defaultStore() -> NSUbiquitousKeyValueStore
Objective C
+ (NSUbiquitousKeyValueStore *)defaultStore
Возвращаемое значение
Совместно используемое значение ключа iCloud хранит объект.
Обсуждение
Приложение должно всегда использовать значение ключа iCloud по умолчанию, хранят объект, чтобы получить и установить значения. Это хранилище связывается к строке уникального идентификатора, которую Ваше приложение обеспечивает в его дающих право запросах.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает массив, связанный с указанным ключом.
Объявление
Swift
func arrayForKey(_
aKey
: String) -> [AnyObject]?Параметры
aKey
Ключ в хранилище значения ключа.
Возвращаемое значение
Массив связался с указанным ключом, или
nil
если ключ не был найден, или его значение неNSArray
объект.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Возвращает булево значение, связанное с указанным ключом.
Объявление
Swift
func boolForKey(_
aKey
: String) -> BoolObjective C
- (BOOL)boolForKey:(NSString *)
aKey
Параметры
aKey
Ключ в хранилище значения ключа.
Возвращаемое значение
Если булево значение связано с указанным ключом, то значение возвращается. Если ключ не был найден, этот метод возвраты
NO
false
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Возвращает объект данных, связанный с указанным ключом.
Объявление
Параметры
aKey
Ключ в хранилище значения ключа.
Возвращаемое значение
Объект данных связался с указанным ключом или
nil
если ключ не был найден, или его значение неNSData
объект.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Возвращает объект словаря, связанный с указанным ключом.
Объявление
Objective C
- (NSDictionary *)dictionaryForKey:(NSString *)
aKey
Параметры
aKey
Ключ в хранилище значения ключа.
Возвращаемое значение
Объект словаря связался с указанным ключом или
nil
если ключ не был найден, или его значение неNSDictionary
объект.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Возвращает двойное значение, связанное с указанным ключом.
Объявление
Objective C
- (double)doubleForKey:(NSString *)
aKey
Параметры
aKey
Ключ в хранилище значения ключа.
Возвращаемое значение
Двойное значение связалось с указанным ключом или
0
если не был найден ключ. Если ключ существует, но не содержит численное значение, этот метод возвраты0
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Возвращает длинное длинное значение, связанное с указанным ключом.
Объявление
Swift
func longLongForKey(_
aKey
: String) -> Int64Objective C
- (long long)longLongForKey:(NSString *)
aKey
Параметры
aKey
Ключ в хранилище значения ключа.
Возвращаемое значение
Длинное длинное значение связалось с указанным ключом или
0
если не был найден ключ. Если ключ существует, но не содержит численное значение, этот метод возвраты0
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Возвращает объект, связанный с указанным ключом.
Объявление
Swift
func objectForKey(_
aKey
: String) -> AnyObject?Objective C
- (id)objectForKey:(NSString *)
aKey
Параметры
aKey
Ключ в хранилище значения ключа.
Возвращаемое значение
Объект связался с указанным ключом или
nil
если не был найден ключ.Обсуждение
Можно использовать этот метод для получения объектов, тип которых Вы не обязательно знаете от хранилища значения ключа. Объект, возвращенный этим методом, всегда является одним из типов списка свойств:
NSNumber
,NSString
,NSDate
,NSData
,NSArray
, илиNSDictionary
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Возвращает строку, связанную с указанным ключом.
Объявление
Параметры
aKey
Ключ в хранилище значения ключа.
Возвращаемое значение
Строка связалась с указанным ключом или
nil
если ключ не был найден, или его значение неNSString
объект.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Устанавливает объект массива для указанного ключа в хранилище значения ключа.
Объявление
Swift
func setArray(_
anArray
: [AnyObject]?, forKeyaKey
: String)Параметры
anArray
Массив, содержание которого может быть сохранено в формате списка свойств. Другими словами, объекты в массиве должны иметь типы
NSNumber
,NSString
,NSDate
,NSData
,NSArray
, илиNSDictionary
. Общий размер (в байтах) массива и его содержания не должен превышать пределы на размер ключа.aKey
Ключ, под которым можно сохранить значение. Длина этого ключа не должна превышать 64 байта с помощью кодирования UTF8.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Устанавливает булево значение для указанного ключа в хранилище значения ключа.
Объявление
Swift
func setBool(_
value
: Bool, forKeyaKey
: String)Objective C
- (void)setBool:(BOOL)
value
forKey:(NSString *)aKey
Параметры
value
Булево значение для хранения.
aKey
Ключ, под которым можно сохранить значение. Длина этого ключа не должна превышать 64 байта с помощью кодирования \UTF8
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Устанавливает объект данных для указанного ключа в хранилище значения ключа.
Объявление
Параметры
aData
Объект данных сохранить. Общий размер этого объекта данных (включая любой объект наверху) не должен превышать 1 МБ.
aKey
Ключ, под которым можно сохранить значение. Длина этого ключа не должна превышать 64 байта с помощью кодирования UTF8.
Обсуждение
Используя
NSData
возразите, поскольку значение в хранении значения ключа позволяет Вам хранить произвольные данные. Например, в игровом приложении, можно использовать его для хранения игрового состояния к iCloud.Обязательно осуществите предостережение при хранении объекта данных. Поскольку это доступно, чтобы быть считанным и измененным каждым экземпляром Вашего приложения, присоединенного к учетной записи iCloud пользователя, некоторые из которых могут быть более старыми версиями или работающий на другой платформе, необходимо старательно защитить целостность объекта данных. Для получения дополнительной информации см. “Предостережение осуществления При использовании Объектов NSData как Значения” в Руководстве по проектированию iCloud.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Устанавливает объект словаря для указанного ключа в хранилище значения ключа.
Объявление
Objective C
- (void)setDictionary:(NSDictionary *)
aDictionary
forKey:(NSString *)aKey
Параметры
aDictionary
Словарь, содержание которого может быть сохранено в формате списка свойств. Другими словами, объекты в словаре должны иметь типы
NSNumber
,NSString
,NSDate
,NSData
,NSArray
, илиNSDictionary
. Общий размер (в байтах) словаря и его содержания не должен превышать пределы на размер ключа.aKey
Ключ, под которым можно сохранить значение. Длина этого ключа не должна превышать 64 байта с помощью кодирования UTF8.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Устанавливает двойное значение для указанного ключа в хранилище значения ключа.
Объявление
Objective C
- (void)setDouble:(double)
value
forKey:(NSString *)aKey
Параметры
value
Двойное значение для хранения.
aKey
Ключ, под которым можно сохранить значение. Длина этого ключа не должна превышать 64 байта с помощью кодирования UTF8.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Устанавливает длинное длинное значение для указанного ключа в хранилище значения ключа.
Объявление
Swift
func setLongLong(_
value
: Int64, forKeyaKey
: String)Objective C
- (void)setLongLong:(long long)
value
forKey:(NSString *)aKey
Параметры
value
Длинное длинное значение для хранения.
aKey
Ключ, под которым можно сохранить значение. Длина этого ключа не должна превышать 64 байта с помощью кодирования UTF8.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Устанавливает объект для указанного ключа в хранилище значения ключа.
Объявление
Swift
func setObject(_
anObject
: AnyObject?, forKeyaKey
: String)Objective C
- (void)setObject:(id)
anObject
forKey:(NSString *)aKey
Параметры
anObject
Объект Вы хотите сохранить. Тип объекта должен быть одним из типов списка свойств:
NSNumber
,NSString
,NSDate
,NSData
,NSArray
, илиNSDictionary
. Общий размер (в байтах) объекта не должен превышать пределы на размер ключа.aKey
Ключ, под которым можно сохранить значение. Длина этого ключа не должна превышать 64 байта с помощью кодирования UTF8.
Обсуждение
Если тип
anObject
не один из типов списка свойств, этот метод не устанавливает его в хранилище значения ключа. Вместо этого это регистрирует ошибку и тихо игнорирует объект.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Устанавливает строковый объект для указанного ключа в хранилище значения ключа.
Объявление
Параметры
aString
Строка Вы хотите сохранить. Общий размер (в байтах) строки не должен превышать пределы на размер ключа.
aKey
Ключ, под которым можно сохранить значение. Длина этого ключа не должна превышать 64 байта с помощью кодирования UTF8.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Явно синхронизируется в клавишах памяти и оценивает с сохраненными на диске.
Объявление
Swift
func synchronize() -> Bool
Objective C
- (BOOL)synchronize
Возвращаемое значение
YES
true
если и дисковые ключи в памяти и значения синхронизировались, илиNO
false
если произошла ошибка. Например, этот метод возвратыNO
false
если приложение не было создано с надлежащими дающими право запросами.Обсуждение
Единственное рекомендуемое время для вызова этого метода на запуск приложения, или после возврата переднему плану, чтобы гарантировать, что представление хранилища значения ключа в памяти актуально.
Изменения, которые Вы вносите в хранилище значения ключа, сохраняются к памяти. Система тогда синхронизирует в клавишах памяти и оценивает с локальным дисковым кэшем, автоматически и в подходящее время. Например, это синхронизирует ключи, когда Ваше приложение помещается в фон, когда изменения получены от iCloud, и когда Ваше приложение вносит изменения в ключ, но не вызывает
synchronize
метод в течение нескольких секунд.Этот метод не вынуждает новые ключи и значения быть записанными в iCloud. Скорее это позволяет iCloud знать, что новые ключи и значения доступны, чтобы быть загруженными. Не полагайтесь на свои ключи и значения, являющиеся доступным на других устройствах сразу. Когда те ключи и значения загружаются, система управляет. Частота запросов загрузки на хранение значения ключа ограничивается несколькими в минуту.
Во время синхронизации между памятью и диском, этот метод обновляет Ваш набор в памяти ключей и значений с изменениями, ранее полученными от iCloud.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Удаляет значение, связанное с указанным ключом от хранилища значения ключа.
Объявление
Swift
func removeObjectForKey(_
aKey
: String)Objective C
- (void)removeObjectForKey:(NSString *)
aKey
Параметры
aKey
Ключ, соответствующий значению, Вы хотите удалить.
Обсуждение
Если указанный ключ не найден в хранилище значения ключа, этот метод ничего не делает. Этот метод удаляет ключ из версии в памяти хранилища только. Вызовите синхронизировать метод в подходящее время для обновления информации о диске.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Словарь, содержащий все пары ключ/значение в хранилище значения ключа. (только для чтения)
Объявление
Swift
var dictionaryRepresentation: [NSObject : AnyObject] { get }
Objective C
@property(readonly, copy) NSDictionary *dictionaryRepresentation
Обсуждение
Этот метод возвращает версию в памяти ключей и значений. Если Вы хотите гарантировать, что этот словарь содержит новый набор изменений, вызвать
synchronize
прежде, чем вызвать этот метод.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Эти ключи могут быть включены в пользовательский информационный словарь
NSUbiquitousKeyValueStoreDidChangeExternallyNotification
уведомление.Объявление
Swift
let NSUbiquitousKeyValueStoreChangeReasonKey: NSString! let NSUbiquitousKeyValueStoreChangedKeysKey: NSString!
Objective C
NSString * const NSUbiquitousKeyValueStoreChangeReasonKey; NSString * const NSUbiquitousKeyValueStoreChangedKeysKey;
Константы
-
NSUbiquitousKeyValueStoreChangeReasonKey
NSUbiquitousKeyValueStoreChangeReasonKey
Значение этого ключа указывает причину измененное хранилище значения ключа, как описано в Причине Изменения Значения.
NSNumber
объект с целочисленным значением.Доступный в OS X v10.7 и позже.
-
NSUbiquitousKeyValueStoreChangedKeysKey
NSUbiquitousKeyValueStoreChangedKeysKey
Значение этого ключа является массивом
NSString
объекты, где каждый - имя ключа, изменившегося в хранилище значения ключа.Доступный в OS X v10.7 и позже.
-
-
Возможные значения связались с
NSUbiquitousKeyValueStoreChangeReasonKey
ключ.Объявление
Swift
var NSUbiquitousKeyValueStoreServerChange: Int { get } var NSUbiquitousKeyValueStoreInitialSyncChange: Int { get } var NSUbiquitousKeyValueStoreQuotaViolationChange: Int { get } var NSUbiquitousKeyValueStoreAccountChange: Int { get }
Objective C
enum { NSUbiquitousKeyValueStoreServerChange, NSUbiquitousKeyValueStoreInitialSyncChange, NSUbiquitousKeyValueStoreQuotaViolationChange, NSUbiquitousKeyValueStoreAccountChange };
Константы
-
NSUbiquitousKeyValueStoreServerChange
NSUbiquitousKeyValueStoreServerChange
Значение изменилось в iCloud. Когда другое устройство, выполняя другой экземпляр Вашего приложения и присоединенный к той же учетной записи iCloud, загружает новое значение, это происходит.
Доступный в OS X v10.7 и позже.
-
NSUbiquitousKeyValueStoreInitialSyncChange
NSUbiquitousKeyValueStoreInitialSyncChange
Ваша попытка записать в хранение значения ключа была отброшена, потому что еще не произошла начальная загрузка с iCloud. Т.е. прежде чем можно будет сначала записать данные значения ключа, система должна гарантировать, что локальный, дисковый кэш приложения соответствует истину в iCloud.
Начальные загрузки происходят в первый раз, когда устройство подключено к учетной записи iCloud, и когда пользователь сменяет их основной аккаунт iCloud.
Доступный в OS X v10.7 и позже.
-
NSUbiquitousKeyValueStoreQuotaViolationChange
NSUbiquitousKeyValueStoreQuotaViolationChange
Хранилище значения ключа Вашего приложения превысило свою квоту пространства на сервере iCloud.
Доступный в OS X v10.7 и позже.
-
NSUbiquitousKeyValueStoreAccountChange
NSUbiquitousKeyValueStoreAccountChange
Пользователь изменил основную учетную запись iCloud. Ключи и значения в локальном хранилище значения ключа были заменены теми из новой учетной записи, независимо от относительных меток времени.
Доступный в OS X v10.8 и позже.
-
-
NSUbiquitousKeyValueStoreDidChangeExternallyNotification NSUbiquitousKeyValueStoreDidChangeExternallyNotification
Отправленный, когда значение одного или более ключей в локальном хранилище значения ключа изменилось вследствие входящих данных, продвинутых от iCloud.
Это уведомление отправляется только на изменение, полученное от iCloud; когда Ваше приложение устанавливает значение, это не отправляется.
Пользовательский информационный словарь может содержать причину уведомления, а также список которого оценивает измененный, следующим образом:
Значение
NSUbiquitousKeyValueStoreChangeReasonKey
ключ, когда существующий, указывает, почему изменилось хранилище значения ключа. Его значение является одной из констант в Причине Изменения Значения.Значение
NSUbiquitousKeyValueStoreChangedKeysKey
, когда настоящее, массив строк, каждый имя ключа, значение которого изменилось.
Объект уведомления
NSUbiquitousKeyValueStore
возразите, чье содержание изменилось.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.