oc利用NSMutableArray模仿Dictionary

//
// MyDictionary.h
// 1117homework
//
// Created by neuedu on 15/11/18.
// Copyright © 2015年 neuedu. All rights reserved.
//

#import <Foundation/Foundation.h>

// 添加键值对: [d1 setObject:@60 forKey:@"score"];
// 删除键值对: [d1 removeObjectForKey:@"name"];
// 检索键值对: [d1 objectForKey:key]

@interface MyDictionary : NSObject

@property (nonatomic,strong)NSMutableArray* arr;

- (void)setMyObject:(id)obj forKey:(id)aKey;
- (void)removeObjectForKey:(id)aKey;
- (id)objectForKey:(id)aKey;
- (NSUInteger)count;

- (instancetype)init;

- (NSString*)description;

@end

// MyDictionary.m
// 1117homework
//
// Created by neuedu on 15/11/18.
// Copyright © 2015年 neuedu. All rights reserved.
//

#import "MyDictionary.h"

@implementation MyDictionary

- (void)setMyObject:(id)obj forKey:(id)aKey
{
NSString* key = nil;
for (int i=0; i<_arr.count; i+=2) {
key = [_arr objectAtIndex:i];
int ret = [aKey compare:key options:NSLiteralSearch];
if ( ret == NSOrderedAscending) {// aKey < key
[_arr insertObject:aKey atIndex:i];
[_arr insertObject:obj atIndex:i+1];
return;
}
else if(ret == NSOrderedSame){// aKey == key
[_arr replaceObjectAtIndex:i+1 withObject:obj];
return;
}
}

[_arr addObject:aKey];
[_arr addObject:obj];
return;
}
- (void)removeObjectForKey:(id)aKey
{
NSString* key = nil;
for (int i=0; i<_arr.count; i+=2) {
key = [_arr objectAtIndex:i];
if([aKey compare:key options:NSLiteralSearch] == NSOrderedSame){// aKey == key
[_arr removeObjectAtIndex:i];// remove key
[_arr removeObjectAtIndex:i];// remove value
return;
}
}
}
- (id)objectForKey:(id)aKey
{
NSString* key = nil;
for (int i=0; i<_arr.count; i+=2) {
key = [_arr objectAtIndex:i];
if([aKey compare:key options:NSLiteralSearch] == NSOrderedSame){// aKey == key
return [_arr objectAtIndex:i+1];
}
}

return nil;
}

- (instancetype)init
{
if (self = [super init]) {
_arr = [[NSMutableArray alloc]init];
}
return self;
}

- (NSUInteger)count
{
return _arr.count/2;
}

- (NSString *)description
{
NSString* str = @"";

for (int i=0; i<_arr.count; i+=2) {
id key = [_arr objectAtIndex:i];
id obj = [_arr objectAtIndex:i+1];
NSString* kv = [NSString stringWithFormat:@"%@=%@\n",key,obj];
str = [str stringByAppendingString:kv];
}

return str;
}

@end

 

posted @ 2015-11-20 00:10  爱健身的程序猿  阅读(136)  评论(0编辑  收藏  举报