本文主要是介绍【Foundation-36-1】#import Foundation/NSIndexPath.h树结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
NSIndexPath 让你精确指定一个树结构 data structure 里面的某个节点的数据
比如你有一个 NSArray, 里面很多节点,每个节点又是一个 NSArray,每个节点的这个里面又是一个NSArray,然后下面又是一个 NSArray
这样简单说起来,你有一个四层的 NSarray ,每层下面都有好多个 NSArray。
然后你造一个 NSIndexPath 1.3.4.2
你就可以拿它访问 第一层的第三个节点之下的第四个节点的第二个节点的数据
常见的就是 UITableView 的 section 和 row
@interface NSIndexPath : NSObject <NSCopying, NSSecureCoding> {
@private
__strong NSUInteger *_indexes;
#if !__OBJC2__
NSUInteger _hash;
#endif
NSUInteger _length;
void *_reserved;
}
+ (instancetype)indexPathWithIndex:(NSUInteger)index;
+ (instancetype)indexPathWithIndexes:(const NSUInteger [])indexes length:(NSUInteger)length;
- (instancetype)initWithIndexes:(const NSUInteger [])indexes length:(NSUInteger)length NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithIndex:(NSUInteger)index;
- (NSIndexPath *)indexPathByAddingIndex:(NSUInteger)index;
- (NSIndexPath *)indexPathByRemovingLastIndex;
- (NSUInteger)indexAtPosition:(NSUInteger)position;
@property (readonly) NSUInteger length;
- (void)getIndexes:(NSUInteger *)indexes;
- (NSComparisonResult)compare:(NSIndexPath *)otherObject; //
@end
// 这个是在 UITableView 里的拓展
@interface NSIndexPath (UITableView)
+ (NSIndexPath *)indexPathForRow:(NSInteger)row inSection:(NSInteger)section;
NSIndexPath *path = [NSIndexPath indexPathForRow:5 inSection:2];
@property(nonatomic,readonly) NSInteger section;
@property(nonatomic,readonly) NSInteger row;
@end
这篇关于【Foundation-36-1】#import Foundation/NSIndexPath.h树结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!