iOS開(kāi)發(fā)結(jié)構(gòu)體如何存入數(shù)組中

1、常見(jiàn)結(jié)構(gòu)體的儲(chǔ)存

比較常見(jiàn)的結(jié)構(gòu)體:CGPoint? ,CGSize,CGRect。。。。。。我們?nèi)绾未娣诺綌?shù)組中呢?因?yàn)槭墙Y(jié)構(gòu)體不是對(duì)象,不能添加到數(shù)組中,解決方法:把這些常見(jiàn)的結(jié)構(gòu)裝換成對(duì)象,讓后放進(jìn)去,取出來(lái)在裝換成結(jié)構(gòu)體使用。我們想到了NSValue使用方法如下:

CGPoint point = CGPointMake(0, 0);

NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:0];

NSValue *value = [NSValue valueWithCGPoint:point];

[array addObject:value];

取出數(shù)組之后的對(duì)象的使用:

NSValue *tmpValue = array[0];

CGPoint tmpPoint = [tmpValue CGPointValue];


下面是一些常見(jiàn)的結(jié)構(gòu)體使用方法是一樣的

+ (NSValue *)valueWithCGPoint:(CGPoint)point;

+ (NSValue *)valueWithCGVector:(CGVector)vector;

+ (NSValue *)valueWithCGSize:(CGSize)size;

+ (NSValue *)valueWithCGRect:(CGRect)rect;

+ (NSValue *)valueWithCGAffineTransform:(CGAffineTransform)transform;

+ (NSValue *)valueWithUIEdgeInsets:(UIEdgeInsets)insets;

+ (NSValue *)valueWithUIOffset:(UIOffset)insets NS_AVAILABLE_IOS(5_0);

- (CGPoint)CGPointValue;

- (CGVector)CGVectorValue;

- (CGSize)CGSizeValue;

- (CGRect)CGRectValue;

- (CGAffineTransform)CGAffineTransformValue;

- (UIEdgeInsets)UIEdgeInsetsValue;

- (UIOffset)UIOffsetValue NS_AVAILABLE_IOS(5_0);

@end


2、自定義結(jié)構(gòu)體的存儲(chǔ)

同樣是先轉(zhuǎn)換NSValue對(duì)象再加入數(shù)組中,代碼如下:

//自定義結(jié)構(gòu)體

typedef struct Books

{

NSString *title;

NSString *author;

NSString *subject;

int? book_id;

} book;

//初始化結(jié)構(gòu)體數(shù)據(jù)

book book1 = {@"首頁(yè)",@"作者",@"子類(lèi)",1};

book book2 = {@"首頁(yè)",@"作者",@"子類(lèi)",2};

book book3 = {@"首頁(yè)",@"作者",@"子類(lèi)",3};

//存入數(shù)據(jù)

NSValue *customValue1 = [NSValue valueWithBytes:&book1 objCType:@encode(struct? Books)];

NSValue *customValue2 = [NSValue valueWithBytes:&book2 objCType:@encode(struct? Books)];

NSValue *customValue3 = [NSValue valueWithBytes:&book3 objCType:@encode(struct? Books)];

NSMutableArray *books = [NSMutableArray arrayWithObjects:customValue1,customValue2,customValue3, nil];

//取出數(shù)據(jù)

[books enumerateObjectsUsingBlock:^(id? _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

book value;

NSValue *customValue = obj;

[customValue getValue:&value];

NSLog(@"%d",value.book_id);

}];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容