文档章节

Object-C学习代码【集合类的介绍】

TomatosX
 TomatosX
发布于 2014/08/28 17:16
字数 483
阅读 21
收藏 1
//
//  main.m
//  OCArray
//
//  Created by  on 14-8-27.
//  Copyright (c) 2014年 Object-C. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
//    MSMutableString相当于Java中的StringBuffer
    NSMutableString *friends = [NSMutableString stringWithCapacity:50];
    [friends appendString:@"James BethLynn Jack Evan"];
    
//    查找Jack在friends中的位置
    NSRange jackRange = [friends rangeOfString:@"Jack"];
    NSLog(@"length = %lu, location = %lu", (unsigned long)jackRange.length, jackRange.location);
//    连同空格和Jack一起删掉
    jackRange.length++;
    
//    删除Jack
    [friends deleteCharactersInRange:jackRange];
    NSLog(@"%@", friends);
    
//    Object-C不能存储基本类型,如int,float,enum,struct和NSArray中的随机指针
//    但是可以在基本类型前面添加一个@符号,将它当成是一个Object-C的对象来存储
    NSArray *array = [NSArray arrayWithObjects:@"jack", @"tom", @"Eva", nil];
    for (NSInteger i = 0; i < [array count]; i++) {
        NSLog(@"index %ld has %@", (long)i, array[i]);
    }
    
//    NSArray长度是不可变的,NSMutableArray长度是可变的
    NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:17];
    [mutableArray addObject:@[@"A", @"b", @"C", @"D"]];
    for (NSInteger i = 0; i < [mutableArray count]; i++) {
        NSLog(@"%@", mutableArray[i]);
    }
    
    NSEnumerator *enumerator = [array objectEnumerator];
    id tmp;
//    将声明直接写到while中,即
//    while(id tmp = [...]){...}
//    这样写会报错
    while (tmp = [enumerator nextObject]) {
        NSLog(@"While迭代, I found %@", tmp);
    }
    
//    快速枚举
//    类似于脚本语言的遍历
//    遍历时用tmp2存储每个数组的值
    for (id tmp2 in array) {
        NSLog(@"快速枚举, I found %@", tmp2);
    }
    
//    NSDictionary两种不同的声明方式
    NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@1, @"Jack", @2, @"Tom", @3, @"Lilei", nil];
    NSDictionary *dictionary2 = @{@1: @"LiLei", @2: @"Jack", @3: @"Tom"};
//    在dictionaryWithObjectsAndKeys中,@1是value,@"Jack"是key
    NSLog(@"%@", [dictionary objectForKey:@"Jack"]);
    NSLog(@"%@", dictionary2[@2]);

//    可变字典的创建方式
    NSMutableDictionary *dictionary3 = [NSMutableDictionary dictionary];
    NSMutableDictionary *dictionary4 = [NSMutableDictionary dictionaryWithCapacity:12];
    
    [dictionary3 setObject:@1 forKey:@"jack"];
    [dictionary3 setObject:@2 forKey:@"tom"];
    [dictionary3 setObject:@3 forKey:@"LiLei"];
    
    [dictionary4 setObject:@3 forKey:@"LiLei"];
    [dictionary4 setObject:@2 forKey:@"jack"];
    [dictionary4 setObject:@1 forKey:@"tom"];
    
    NSLog(@"dictionaryWithObjectsAndKeys方法创建NSMutableDictionary, jack对应的value是 %@", dictionary3[@"jack"]);
    NSLog(@"字面量方式创建NSMutableDictionary, tom对应的value是 %@", dictionary4[@"tom"]);
    
//    用NSNumber对基本数据类型进行封装
    NSNumber *number = @15;
    NSLog(@"%d", number.intValue);
    NSMutableArray *mutableArry2 = [[NSMutableArray alloc] init];
    [mutableArry2 addObject:number];
    NSLog(@"%@", mutableArry2[0]);
    
//    NSValue来封装NSRect
    NSRect rect = NSMakeRect(1, 2, 30, 40);
    NSValue *value = [NSValue valueWithBytes:&rect objCType:@encode(NSRect)];
    [mutableArry2 addObject:value];
    NSLog(@"%@", mutableArry2[1]);
    
    return (0);
}

© 著作权归作者所有

TomatosX
粉丝 23
博文 207
码字总数 119547
作品 0
成都
iOS工程师
私信 提问
开发随笔-移动开发小结

最近一直在学习iphone,android,wp7的开发.截止到今天,基础的学习个人感觉算差不多了,当然也就是入门级别.在这里总结一下,同时为下个阶段的计划作个准备. 我最开始看的是android开发,原因是因...

晨曦之光
2012/03/08
228
0
Object-C学习笔记之基础知识一

Object-C 是C的衍生语言,继承了所有C语言的特性,但是Object-C并不是继承自C语言特性本身。 首先我们先通过例子来说明Object-C中的一些基本语法: #import <Foundation/Foundation.h> @inte...

Yi_Yuan_n
2015/10/02
201
0
javascript初接触

似乎需要学习一点点javascript了。不然都跟不上Qt的步伐了... 弱类型(weak typing) javascript 是弱类型语言,这个似乎没有什么疑问。可是什么是弱类型,似乎有点... 混乱! 一种说法是,像C...

晨曦之光
2012/05/08
62
0
python源码学习(三)——对象的创建和对象的行为

在将对象的创建和行为之前,我们先来看一下类型对象,python是弱类型语言,但并不代表python没有类型,python中处理对象的类型有一个专门的对象,我们称之为类型对象,如果不知道对象的类型就...

hyhlinux
2016/12/01
8
0
Object-C学习笔记(一)

最近休息在家,闲来无事想搞一个iphone的游戏玩玩,于是买了本 图灵 的 Object-C基础教程 看了看,这本书还算比较基础,里面讲解知识点也比较通俗易懂,尤其是做过一些开发的人,基本上没有什...

logbird
2012/11/29
10.8K
2

没有更多内容

加载失败,请刷新页面

加载更多

为什么要在网站中应用CDN加速?

1. 网页加载速度更快 在网站中使用CDN技术最直接的一个好处就是它可以加快网页的加载速度。首先,CDN加速的内容分发是基于服务器缓存的,由于CDN中缓存了不少数据,它能够给用户提供更快的页...

云漫网络Ruan
19分钟前
2
0
亚玛芬体育(Amer Sports)和信必优正式启动合作开发Movesense创新

亚玛芬体育和信必优正式启动合作开发Movesense创新,作为亚玛芬体育的完美技术搭档,信必优利用Movesense传感器技术为第三方开发移动应用和服务。 Movesense基于传感器技术和开放的API,测量...

symbiochina88
30分钟前
2
0
创龙TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA核心板规格书

SOM-TL437xF是一款广州创龙基于TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA芯片设计的核心板,采用沉金无铅工艺的10层板设计,适用于高速数据采集和处理系统、汽车导航、工业自动化等领...

Tronlong创龙
31分钟前
2
0
好程序员Java学习路线分享MyBatis之线程优化

  好程序员Java学习路线分享MyBatis之线程优化,我们的项目存在大量用户同时访问的情况,那么就会出现大量线程并发访问数据库,这样会带来线程同步问题,本章我们将讨论MyBatis的线程同步问...

好程序员官方
37分钟前
6
0
IDEA 自定义方法注解模板

IDEA 自定义方法注解模板 1、使用效果 /*** 计算交易费用* @Author wangjiafang* @Date 2019/9/11* @param feeComputeVo* @return*/@PostMapping("/v1/fee_compute")public ApiResp......

小白的成长
37分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部