如何解读document.state == 12(iCloud)

n.e*_*ind 2 iphone objective-c ios5 icloud uidocument

每当我从iCloud加载UIDocument时,我会像这样检查它的状态:

NSLog(@"Library loadFromContents: state = %d", self.documentState);
Run Code Online (Sandbox Code Playgroud)

在某些情况下,我收到了导致崩溃的8号或12号文件.我现在想知道8和12究竟是什么代表什么.据我所知,documentState是一个位字段,因此它有许多不同的标志.该文件表明:

enum {
UIDocumentStateNormal          = 0,
UIDocumentStateClosed          = 1 << 0,
UIDocumentStateInConflict      = 1 << 1,
UIDocumentStateSavingError     = 1 << 2,
UIDocumentStateEditingDisabled = 1 << 3   }; 
typedef NSInteger UIDocumentState;
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何在我的情况下解释这一点.我如何找出8和12代表什么?

kla*_*her 8

在枚举中,他们做了一些小小的转变.他们也可以像这样写:

enum {
UIDocumentStateNormal          = 0,
UIDocumentStateClosed          = 1,
UIDocumentStateInConflict      = 2,
UIDocumentStateSavingError     = 4,
UIDocumentStateEditingDisabled = 8   }; 
typedef NSInteger UIDocumentState;
Run Code Online (Sandbox Code Playgroud)

向左移位基本上是移位运算符后给出的数字的2的幂... 1 << 1表示2 ^ 1,1 << 2表示2 ^ 2等...

状态为8表示UIDocumentStateEditingDisabled,12表示UIDocumentStateEditingDisabledUIDocumentStateSavingError