该项目是用于持久化 Objective-C 的结构体的工具,支持 Vector, Set 和 HashMap 数据结构。
下面代码演示如何序列化 Vector 结构:
#import "AAPersistentVector.h" #import "AATransientVector.h" #import "AAIIterator.h" /// Initialization AAPersistentVector *vector1 = [[AAPersistentVector alloc] init]; // But if you need a persistent empty vector, better use the pre-created empty one. AAPersistentVector *vector2 = [AAPersistentVector empty]; // Or you can load an array into it during initialization: AAPersistentVector *vector = [[AAPersistentVector alloc] initWithArray:@[@1, @2, @3]]; /// CRUD operations [vector objectAtIndex:1]; // => @2 vector = [vector addObject:@4]; // => vector with @1, @2, @3, @4 vector = [vector replaceObjectAtIndex:2 withObject:@5]; // => vector with @1, @2, @5, @4 vector = [vector removeLastObject]; // => vector with @1, @2, @5 /// Convert to NSArray [vector toArray]; // => @[@1, @2, @5] /// Iterating // With Fast Enumeration for (id value in vector) { // going to iterate through values with `value` = @1, @2 and @5 } // With Iterator id<AAIIterator> iterator = [vector iterator]; while (iterator) { [iterator first]; // => @1, @2 and @5 iterator = [iterator next]; } // With each (fastest way) [vector each:^(id value) { // going to iterate through values with `value` = @1, @2 and @5 }]; /// Transients // Efficiently add 100 objects to the vector. Will be ~10 times faster than // adding without transient [vector withTransient:^(AATransientVector *transient) { for (NSUInteger i = 0; i < 100; i += 1) { transient = [transient addObject:@(i)]; } return transient; }]; // You can also do that without a block, if you want AATransientVector *transientVector = [vector asTransient]; for (NSUInteger i = 0; i < 100; i += 1) { transientVector = [transientVector addObject:@(i)]; } vector = [transientVector asPersistent];