自定义类实现基于数组/字典Literal Syntax设置和获取数据

.h文件

#import <Foundation/Foundation.h>

@interface TestKVC : NSObject {
    
    NSMutableDictionary *mDictionary;
    NSMutableArray *mArray;
}

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

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

@end

.m文件

#import "TestKVC.h"

@implementation TestKVC

- (id)init {
    
    self = [super init];
    if (self) {
        mArray = [NSMutableArray array];
        mDictionary = [NSMutableDictionary dictionary];
    }
    
    return self;
}

- (void)setObject:(id)anObject atIndexedSubscript:(NSUInteger)index {
    [mArray insertObject:anObject atIndex:index];
}

- (id)objectAtIndexedSubscript:(NSUInteger)idx {
    return [mArray objectAtIndex:idx];
}

- (void)setObject:(id)object forKeyedSubscript:(id < NSCopying >)aKey {
    [mDictionary setObject:object forKey:aKey];
}

- (id)objectForKeyedSubscript:(id)key {
    return [mDictionary objectForKey:key];
}

@end

使用

    TestKVC *test = [[TestKVC alloc] init];
    test[@"key"] = @"Hello";
    id value = test[@"key"];
    
    [test setObject:@"World" forKeyedSubscript:@"key0"];
    id value0 = [test objectForKeyedSubscript:@"key0"];
    
    NSLog(@"%@ %@", value, value0);  // Hello World
    
    
    test[0] = @"Hello";
    test[1] = @"World";
    
    id v0 = test[0];
    id v1 = test[1];
    
    NSLog(@"%@  %@", v0, v1);         // Hello World
时间: 2024-12-26 15:51:30

自定义类实现基于数组/字典Literal Syntax设置和获取数据的相关文章

基于数组实现Java 自定义Queue队列及应用

Java 自定义队列Queue: 队列的抽象数据类型就是一个容器,其中的对象排成一个序列,我们只能访问和取出排在最前端( Front)的对象,只能在队列的尾部( Rear)插入新对象.正是按照这一规则,才能保证最先被插入的对象首先被删除( FIFO).java本身是有自带Queue类包,为了达到学习目的已经更好深入了解Queue队列,自己动手自建java Queue类是个很好的学习开始: 基于数组的实现 ? 顺序数组 借助一个定长数组 Q 来存放对象,即可简单地实现队列.那么,为了符合 FIFO

Java 基于数组自定义实现容量不可变向量Vector

背景:假定集合 S 由 n 个元素组成,它们按照线性次序存放,于是我们就可以直接访问其中的第一个元素.第二个元素.第三个元素--.也就是说,通过[0, n-1]之间的每一个整数,都可以直接访问到唯一的元素 e,而这个整数就等于 S 中位于 e 之前的元素个数??在此,我们称之为该元素的秩( Rank).不难看出,若元素 e 的秩为 r,则只要 e 的直接前驱(或直接后继)存在,其秩就是 r-1(或 r+1).这一定义与 Java. C++之类的程序语言中关于数组元素的编号规则是一致的.支持通过秩

C#中自定义类数组和结构数组的使用

如有雷同,不胜荣幸,若转载,请注明 最近在很多项目中发现很多时候给定的数组要实现某个逻辑或处理很是麻烦,一维数组,二维数组,,,等等需要经过n多转换,还不如自己写一个自定义数组,既方便又节省时间,以下是类数组,其实相当于定义了一个实体类一样,只是使用的时候写成数组的形式在用 Class RGB { public byte red; public byte green; public byte blue; public RGB(byte r,byte g,byte b) { this.red =

POST JSON (字典 自定义类转为JSON上传)

/// POST JSON 的主方法 主要设置  Content-Type 为  application/json 剩下就是将 类转为JSON 格式二进制数 - (void)postJSON:(NSData *)data { // 1. url NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/postjson.php"]; // 2. request NSMutableURLRequest *request = [NSMutab

类模板,多种类型的类模板,自定义类模板,类模板的默认类型,数组的模板实现,友元和类模板,友元函数,类模板与静态变量,类模板与普通类之间互相继承,类模板作为模板参数,类嵌套,类模板嵌套,类包装器

 1.第一个最简单的类模板案例 #include "mainwindow.h" #include <QApplication> #include <QPushButton> #include <QLabel> template<class T> class run { public: T w; void show() { w.show(); } void settext() { w.setText("A"); }

Effective Objective-C 2.0 笔记三(Literal Syntax简写语法)

当使用Objective-C的时候,你总会遇到Foundation 框架中的一些类,这些类包括NSString,NSNumber,NSArray和NSDictionary,这些数据结构都是自解释的. Objective-C以简明详细的语法而著名,自从oc1.0有一个简单的方式定义一个NSString变量,我们可以这样声明一个字符串变量 NSString *[email protected]"Hello Lves"; 没有这种语法之前,我们创建一个字符串变量需要先alloc然后init.

.net Mvc Controller 接收 Json/post方式 数组 字典 类型 复杂对象

原文地址:http://www.cnblogs.com/fannyatg/archive/2012/04/16/2451611.html ------------------------------------------------------------------------------------------------------------------ Asp.net Mvc Controller Json数组接收数组字典 类型 复杂对象 方法一,(最复杂的方法)扩展ModelBin

Django 10 模型层 model 元信息,对象优化查询,自定义group_concat,基于jq的ajex异步请求

Django model 元信息,对象优化查询,自定义group_concat,基于jq的ajex异步请求 Model类元信息 ORM对应的类里面包含另一个Meta类,而Meta类封装了一些数据库的信息.主要字段如下: da_table:ORM在数据库中的表名默认是 app_类名,可以通过db_table可以重写表名. index_together:联合索引 unique_together:联合唯一索引 ordering:指定默认按什么字段排序. 只有设置了该属性,我们查询到的结果才可以被rev

Objective-C literal syntax

1.NSNumber old:NSNumber *oldNumber = [NSNumber numberWithInt:1]; new:NSNumber *newNumber = @1; 同理: NSNumber *intNumber = @1; NSNumber *floatNumber = @1.0f; NSNumber *doubleNumber = @0.001; NSNumber *boolNumber = @YES; NSNumber *charNumber = @'a'; 2.N