为啥 CKRecordZone 对象的属性“capabilities”的值等于 7?

Posted

技术标签:

【中文标题】为啥 CKRecordZone 对象的属性“capabilities”的值等于 7?【英文标题】:Why does the value of the property "capabilities" of the CKRecordZone object equal to 7?为什么 CKRecordZone 对象的属性“capabilities”的值等于 7? 【发布时间】:2016-01-22 14:07:16 【问题描述】:

在我的 ios 应用程序中,我创建了一个自定义区域,然后通过 CKFetchRecordOperation 获取该区域。之后,我让控制台打印获取的 CKRecordZone 的属性“capabilities”的值。值是7,怎么会这样?

根据文档,值是枚举类型CKRecordZoneCapabilities,它只有值1

【问题讨论】:

猜测:一定有私有能力,SDK中没有透露。 【参考方案1】:

根据 iOS 10 SDK 源码(CKRecordZone.h),功能如下:

typedef NS_OPTIONS(NSUInteger, CKRecordZoneCapabilities) 
    /* This zone supports CKFetchRecordChangesOperation */
    CKRecordZoneCapabilityFetchChanges   = 1 << 0,
    /* Batched changes to this zone happen atomically */
    CKRecordZoneCapabilityAtomic         = 1 << 1,
    /* Records in this zone can be shared */
    CKRecordZoneCapabilitySharing        NS_AVAILABLE(10_12, 10_0) = 1 << 2,
 NS_AVAILABLE(10_10, 8_0);

所以 '7' 的值似乎相当不错 (1 + 2 + 4)。您的区域已具备所有可用功能。

【讨论】:

以上是关于为啥 CKRecordZone 对象的属性“capabilities”的值等于 7?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 CKRecordZone 分配给 CKRecord

我们应该在 CKDatabase 和 CKRecordZone 中分别缓存一个 CKServerChangeToken 吗?

为啥 CAP 定理中的 RDBMS 分区不能容忍,为啥它可用?

为啥 Javacard 会阻止在单个 javacard 程序的 AID .cap 文件中上传不同的文件?

解锁后无法在 JavaCard 中列出或安装 CAP 文件。为啥?以及如何解决?

为啥不对对象属性使用闭包?