Objective-C实现一个基于数组下标[index]和字典[@"key"]的访问模式

原创 2016年06月20日 16:05:16
//
//  MyArray.h
//  001-自己实现数组下标
//
//

#import <Foundation/Foundation.h>

@interface MyArray : NSObject
{
    @private
    NSMutableArray * mArray;
}

- (void)setObject:(id)anObject atIndexedSubscript:(NSUInteger)index;

- (id)objectAtIndexedSubscript:(NSUInteger)idx;

@end



//
//  MyArray.m
//  001-自己实现数组下标
//
//

#import "MyArray.h"

@implementation MyArray

- (instancetype)init {
    
    self = [super init];
    
    if (self) {
        
        self->mArray = [[NSMutableArray alloc] init];
        
        [self->mArray addObject:@"array 1"];
        
        [self->mArray addObject:@"array 2"];
        
        [self->mArray addObject:@"array 3"];
        
        [self->mArray addObject:@"array 4"];
        
    }
    
    return self;
}

//NSMutableArray
//实现这个可以通过下标赋值  array[2] = @"2";
- (void)setObject:(id)anObject atIndexedSubscript:(NSUInteger)index{
    const NSUInteger length = [mArray count];
    
    if(index > length)
        
        return;
    
    if(index == length)
        
        [mArray addObject:anObject];
    
    else
        
        [mArray replaceObjectAtIndex:index withObject:anObject];
    
}

//NSMutableArray  NSArray
//实现这个可以通过下标访问元素
- (id)objectAtIndexedSubscript:(NSUInteger)idx{
    
    if(idx >= [mArray count])
        
        return nil;
    
    return [mArray objectAtIndex:idx];
    
}

@end


//
//  MyDictionary.h
//  001-自己实现数组下标
//
//

#import <Foundation/Foundation.h>

@interface MyDictionary : NSObject
{
    @private
    NSMutableDictionary * mDict;
}

- (void)setObject:(id)object forKeyedSubscript:(id < NSCopying >)aKey;

- (id)objectForKeyedSubscript:(id)key;

@end



//
//  MyDictionary.m
//  001-自己实现数组下标
//
//

#import "MyDictionary.h"

@implementation MyDictionary

- (instancetype)init {
    
    self = [super init];
    
    if (self) {
        
        self->mDict = [[NSMutableDictionary alloc] init];
        
        [self->mDict setObject:@"dict 1" forKey:@"1"];
        
        [self->mDict setObject:@"dict 2" forKey:@"2"];
        
        [self->mDict setObject:@"dict 3" forKey:@"3"];
        
        [self->mDict setObject:@"dict 4" forKey:@"4"];
        
    }
    
    return self;
    
}

//通过key赋值
- (void)setObject:(id)object forKeyedSubscript:(id < NSCopying >)aKey{
    
    [mDict setObject:object forKey:aKey];
    
}

//通过key取值
- (id)objectForKeyedSubscript:(id)key{
    
    return [mDict objectForKey:key];
    
}

@end


测试代码:

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    self.view.backgroundColor = [UIColor whiteColor];
    
    
    
    MyArray * myarray = [[MyArray alloc] init];
    
    NSLog(@"%@", myarray[2]);
    
    myarray[2] = @"change array 2";
    
    NSLog(@"%@", myarray[2]);
    
    
    MyDictionary * mydict = [[MyDictionary alloc] init];
    
    NSLog(@"%@", mydict[@"2"]);
    
    mydict[@"2"] = @"change dict 2";
    
    NSLog(@"%@", mydict[@"2"]);
    
    
    
}


输出:

2016-06-20 16:04:06.485 001-自己实现数组下标[8751:2834015] array 3
2016-06-20 16:04:06.487 001-自己实现数组下标[8751:2834015] change array 2
2016-06-20 16:04:06.489 001-自己实现数组下标[8751:2834015] dict 2
2016-06-20 16:04:06.489 001-自己实现数组下标[8751:2834015] change dict 2








版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lvdezhou/article/details/51721377

Objective-C字典使用详解

#import #import "AppDelegate.h" int main(int argc, char * argv[]) { //类似Java中的Map,即键值对; N...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2015-09-22 11:11:20
  • 1240

Object C Dictionary字典

通过Array数组和Set集合的学习和理解,可以想象得到Dictionary也分为两种情况了,那就是可变和不可变两种类型的。的确如此,在Object C中提供了两个字典类,分别为NSDictionar...
  • qq_17007915
  • qq_17007915
  • 2015-10-13 12:39:44
  • 877

IOS之NSArray 中调用的方法详解(1)

下面的例子以      NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"jonery",@"stany", ...
  • shx_yi
  • shx_yi
  • 2013-03-18 22:00:42
  • 69892

Objective-C实现一个基于数组下标[index]和字典[@"key"]的访问模式

// // MyArray.h // 001-自己实现数组下标 // // #import @interface MyArray : NSObject { @private ...
  • lvdezhou
  • lvdezhou
  • 2016-06-20 16:05:16
  • 570

#Objective-C 之 省市区 (数组-字典-数组-字典-数组)

通过Object-C的数组与字典组合嵌套,完成对省市区的排序封装
  • Clhwa
  • Clhwa
  • 2015-12-23 15:08:26
  • 668

基于 Objective-C OC的省市区代码(字典数组嵌套)

//这是Objective-c OC 中关于 字典与数组嵌套使用的一道经典例题,//为了能让正在学习OC的伙伴们看的更加明白 注释写得很是详细// //省 市 区 划分 // main.m // ...
  • TheSoftLight
  • TheSoftLight
  • 2015-11-10 19:52:23
  • 431

【学习ios之路:Objective-C】字典.集合.

1.不可变数据字典(NSDicionary) 字典:用来存储具有一一对应关系的数据. 一个key 对应一个 value ,key起到了唯一标示的作用,key必须是唯一的,但是一个vlaue可以对应多个...
  • ZFX5130
  • ZFX5130
  • 2015-01-01 22:14:30
  • 1526

Objective-C如何自己实现一个基于数组下标的属性访问模式

在iOS6.0以及OS X10.8之后,Apple引入了一套非正式协议(informal protocol)与Objective-C语法直接绑定。当你实现了这其中的方法之后即可使用数组下标来访问属性元...
  • likendsl
  • likendsl
  • 2015-03-27 09:53:29
  • 2819

按下标方式提取Dictionary的值

Dictionary通过下标获取key和value  Dictionary dic = new Dictionary();             Dictionary.Enume...
  • rztyfx
  • rztyfx
  • 2015-06-29 20:31:41
  • 3563

react中的key属性与angular中的index属性

1、react中渲染数据列表异常示例:render(){ const olist = this.props.list.map((item,index)=>{ return {it...
  • qq_35087256
  • qq_35087256
  • 2017-09-08 14:07:58
  • 269
收藏助手
不良信息举报
您举报文章:Objective-C实现一个基于数组下标[index]和字典[@"key"]的访问模式
举报原因:
原因补充:

(最多只允许输入30个字)