Foundation框架(3)数组对象及集合对象

  • 数组对象NSArray

数组对象的创建:

+ (instancetype)array     //空数组
+ (instancetype)arrayWithObject:(ObjectType)anObject     //一个对象元素的数组
+ (instancetype)arrayWithObjects:(ObjectType)firstObj, … //多个对象元素的数组(最后一个参数为nil)

字面值:

NSArray * arr = @[@"hello", @10, @YES];  //常量方式

注意:只能存储OC对象,数值需要封装成对象,nil需要封装成NSNull

基本操作:

@property(readonly) NSUInteger count
- (BOOL)containsObject:(ObjectType)anObject
@property(nonatomic, readonly) ObjectType firstObject
@property(nonatomic, readonly) ObjectType lastObject
- (ObjectType)objectAtIndex:(NSUInteger)index
- (NSUInteger)indexOfObject:(ObjectType)anObject

文件/URL操作相关:

+ (NSArray<ObjectType> *)arrayWithContentsOfFile:(NSString *)aPath
+ (NSArray<ObjectType> *)arrayWithContentsOfURL:(NSURL *)aURL
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag
- (BOOL)writeToURL:(NSURL *)aURL atomically:(BOOL)flag

数组的遍历方式一:C语言方式

for ( int i=0; i<arr.count; i++) {
    NSLog(@"%@", arr[i]);
}

数组的遍历方式二:

for ( id obj in arr4) {
    NSUInteger i = [arr4 indexOfObject:obj];   
    NSLog(@"index:%lu %@", i, obj);
}

注意:这种遍历方式应用在可变数组时,不要在 遍历过程中改变数组

  • 可变数组对象

NSMutableArray用于描述可变数组对象,是NSArray的子类

添加:

- (void)addObject:(ObjectType)anObject
- (void)addObjectsFromArray:(NSArray<ObjectType> *)otherArray
- (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index

删除:

- (void)removeAllObjects
- (void)removeLastObject
- (void)removeObjectAtIndex:(NSUInteger)index
  • 集合对象

NSSet用于描述集合对象,子类为NSMutableSet

集合与数组的区别:1)集合不支持下标取成员 2)集合中不能有重复对象

集合对象的创建:

+ (instancetype)set
+ (instancetype)setWithArray:(NSArray<ObjectType> *)array
+ (instancetype)setWithObject:(ObjectType)object
+ (instancetype)setWithObjects:(ObjectType)firstObj, firstObj, ...

集合对象的常见操作:

@property(readonly) NSUInteger count
@property(readonly, copy) NSArray < ObjectType > *allObjects
- (ObjectType)anyObject
- (BOOL)containsObject:(ObjectType)anObject

可变集合对象的操作:

- (void)addObject:(ObjectType)object
- (void)removeObject:(ObjectType)object
- (void)removeAllObjects
- (void)addObjectsFromArray:(NSArray<ObjectType> *)array

其他集合对象:

可变集合对象NSMutableSet

索引集合NSIndexSet

字符集合NSCharacterSet

...

时间: 2024-08-17 12:41:54

Foundation框架(3)数组对象及集合对象的相关文章

黑马程序员-Foundation框架之数组和字典

一.Foundation框架简介 Foundation框架,顾名思义就是基础框架.基础框架上的类都是与用户界面无关的,为所有的程序开发提供一个基础.OC的基础框架常用的类包括:数组,字典,数字,字符串等以及它们的子类.要使用这个框架需要在引入头文件#import <Foundation/Foundation.h> 二.数组 NSArray类以及它的子类NSMutableArray,一个是不可变数组,一个是可变数组.下面通过代码来看一下它的一些基本的用法. 1 #import <Found

Objective-C( Foundation框架 一 数组(NSMutableArray))

NSMutableArray:可变数组 NSMutableArray是NSArray的子类 创建NSMutableArray数组对象 添加数组元素: // 创建数组 NSMutableArray *array = [NSMutableArray arrayWithObject:@"lier",@"hello",nil]; [array addObject:[[Person alloc] init]]; // 添加元素 [array addObject:@"

Objective-C( Foundation框架 一 数组(NSArray))

OC数组 NSArray是静态的数组,就是它所指向的内容是不可改变的,它指向一段内存区域,一旦初始化,不能通过它对该内存区域的数据进行修改操作,但是它可以读数据. NSMutableArray是动态的是NSArray的子类,可以对所指向的内存区域内容进行更改,并可以增加数组内容 NSArray和NSMutableArray的第一个数据的下标为0. 1.NSArray 不可变数组 [array1 count]: 数组的长度. // 创建OC数组对象 NSArray *array = [NSArra

JS中集合对象(Array、Map、Set)及类数组对象的使用与对比

原文地址 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型. ES6引入了iterable类型,Array,Map,Set都属于iterable类型,它们可以使用for...of循环来遍历,都内置forEach方法. 数组 遍历 普通遍历 最简单的一种,也是使用频率最高的一种. let arr = ['a', 'b', 'c', 'd', 'e'] for (let i = 0; i < ar

Objective-C语言Foundation框架

Mac OS X开发会使用Cocoa框架,它是一种支持应用程序提供丰富用户体验的框架,它实际上由:Foundation和Application Kit(AppKit)框架组成.iOS开发,会使用Cocoa Touch框架,它实际上由:Foundation和UIKit框架组成. • AppKit和UIKit框架都是与窗口.按钮.列表等相关的类.Foundation是Mac OS X和iOS应用程序开发的基础框架,它包括了一些基本的类,如:数字.字符串.数组.字典等. • 基本数据类型,int.ch

Foundation框架的基本对象之数组对象

在程序设计中数组的使用非常频繁,Foundation框架提供了NS数组类型,NS数组类型包括可修改的和不可修改两种,只能用来存放相关的对象类型,OC为我们提供了相关的基本的数组操作,并对相关的数组操作进行了封装. 数组的定义 我们可以简单的把数组看做是把同一类型的数据有序的进行排列,进行同一存储,即同种类型数据的集合. 数组的声明 数组声明和变量声明类似 格式:数组类型  数组名[数组大小]例如 :int score[5]; 数据类型  数组名[长度]=[数值1,数值2,……,数值n]. 例如:

jsWindow 对象 Window 对象 Window 对象表示浏览器中打开的窗口。 如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。 注释:没有应用于 window 对象的公开标准,不过所有浏览器都支持该对象。 Window 对象集合 集合 描述 frames[] 返回窗口中所有命

一.JSX简介 JSX就是Javascript和XML结合的一种格式.React发明了JSX,利用HTML语法来创建虚拟DOM.当遇到<,JSX就当HTML解析,遇到{就当JavaScript解析. 如下(JS写法) var child1 = React.createElement('li', null, 'First Text Content'); var child2 = React.createElement('li', null, 'Second Text Content'); var

【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词

一. 字符串 API 1. NSString 用法简介 (1) NSString API 介绍 NSString 功能 : -- 创建字符串 : 使用 init 开头的实例方法, 也可以使用 String 开头的方法; // init 开头方法创建字符串 unichar data[5] = {97, 98, 99, 100, 101}; NSString * str = [[NSString alloc] initWithCharacters : data length : 5]; // str

JAVA-初步认识-常用对象API(集合框架-体系共性功能)

一. 集合是个容器,用来存储对象的.当我们存储的对象数目变多的时候,会带来一些问题. 对象在集合里面装的时候,到底是如何进行存储的?有人说直接往里扔就是了,要注意,对于对象而言,不止集合这么一种容器. 对于对象的存储方式,每一个集合都有自己独特的定义,是根据某些需求而定的. 举例子来谈:用水杯泡茶,必须有过滤网,不然喝茶会有茶叶,如果只是喝白开水那么就不需要过滤网. 这说明容器自身都有其特定的结构,这种结构我们称之为数据结构,容器里面存储的就是数据. 数据到底按照什么样的方式来进行存放呢?我们称