一 数组的价值:
1 存储多个元素
2 存储的元素只能是对象, 对象可以是不同类型的
3 数组是一个有序的集合
4 数组中的元素可以重复, 而且重复的对象会成为数组元素
二 创建数组
1 通过便利构造器创建数组
NSArray *arr1 = [NSArray arrayWithObjects:str1, str2, str3, str4, str5, str6, nil];
arrayWithObjects 创建对象时可以指定多个对象元素, 元素与元素之间通过逗号间隔
nil 作为数组元素存放的结束标志, 遇到nil之后, 之后的元素都不会放在数组中
2 通过初始化方法创建数组
NSArray *arr2 = [[NSArray alloc] initWithObjects:str1, str2, str3, str4, str5, str6, nil];
三 获取元素个数
NSUInteger count = [arr1 count];
四
通过下边获取数组元素
NSLog(@"%@", [arr2 objectAtIndex:0]);
获取最后一个元素
NSLog(@"%@", [arr1 lastObject]);
通过给定元素获取数组中的下标
NSLog(@"%lu", [arr2 indexOfObject:str4]);
判断是否包含给定元素
BOOL isExist = [arr1 containsObject:str5];
NSLog(@"isExist = %hhd", isExist);
五
数组排序
NSArray *sortArr = [arr2 sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@", sortArr);
六 快速遍历(快速枚举)
for (NSString *str in arr2) {
NSLog(@"%@", str);
}
forin快速枚举(快速遍历)用于将集合中的元素取出, 遍历出来type *object: type *数组中元素的类型, object是给对象起一个名字 , collection: 集合(也就是大容器, 数组, 字典, 集合)
可变数组
添加
[arr addObject:book4];
删除
[arr removeObject:book1];
查找
for (Book *book in arr) {
//获取到数组中的元素, 然后对比名字, 如果相同就输出名字
if ([[book name] isEqualToString:@"iOS高级编程"]) {
[book setPrice:1000];
NSLog(@"查找成功, name:%@, price:%.2f", [book name], [book price]);
}
}
输出书籍清单(书名)
NSLog(@"%.2f", [book3 price]);
for (Book *book in arr) {
NSLog(@"%@", book);
}
//重写从父类继承过来的description方法
//当打印该类的对象时, 系统会自动调用该方法
- (NSString *)description
{
//%g可以忽略掉无用的0
return [NSString stringWithFormat:@"name:%@, author:%@, price:%g", _name, _author, _price];
}
数据类型转换
//1 定义基本数据类型变量
char a = 'f';
int b = 103;
short c = 100;
long d = 1000;
float f = 10.23;
double e = 100.22222;
BOOL isTrue = YES;
//2 将基本数据类型转为NSNumber类型的对象
NSNumber *a1 = [NSNumber numberWithChar:a];
NSNumber *b1 = [NSNumber numberWithInt:b];
NSNumber *c1 = [NSNumber numberWithShort:c];
NSNumber *d1 = [NSNumber numberWithLong:d];
NSNumber *f1 = [NSNumber numberWithFloat:f];
NSNumber *e1 = [NSNumber numberWithDouble:e];
NSNumber *isTrue1 = [NSNumber numberWithBool:isTrue];
NSArray *arr = [NSArray arrayWithObjects:a1, b1, c1, d1, f1, e1, isTrue1, nil];
NSLog(@"%@", arr);
NSLog(@"%@, %@, %@, %@, %@, %@, %@", a1, b1, c1, d1, f1, e1, isTrue1);
//3 将NSNumber类型的对象转为基本数据类型
char a2 = [a1 charValue];
NSLog(@"%c", a2);
int b2 = [b1 intValue];
NSLog(@"%d", b2);
//4 NSNumber类型的对象比较
NSLog(@"%ld", [a1 compare:b1]);
数组中的常见错误:was mutated while being enumerated.
遇到这类错误的时候,是同时对同一个数组进行了操作
解决方案:在对数组内容进行改变的时候,使用备份数组
下面一个简单的出现这类错误的用法:
NSMutableArray * arrayTemp = xxx;
for (NSDictionary * dic in arrayTemp) {
if (condition){
[arrayTemp removeObject:dic];
}
}
应该改为:
NSMutableArray * arrayTemp = xxx;
NSArray * array = [NSArray arrayWithArray: arrayTemp];
for (NSDictionary * dic in array) {
if (condition){
[arrayTemp removeObject:dic];
}
}
相关推荐
Loupe Browser实战指南:解锁10xGenomics单细胞数据的可视化奥秘
本文提供了Loupe Browser的实战指南,帮助用户无需编程即可探索和可视化10xGenomics单细胞数据。文章详细介绍了从数据导入、界面导航到细胞亚群鉴定、差异基因分析的核心操作流程,并分享了高级技巧与避坑指南,是快速上手这一强大可视化工具的必备参考。
OC基础笔记5
101,foundation框架是基础框架,有众多应用程序借口API,大致知道里面有哪些方法,OSX大概有80个框架。结构体,枚举,类,是常用的数据类型。常用的类都是NS开头的,因为是乔布斯创建的NEXT公司开发的Next Step系统的简称。 102,常见错误,不小心修改了框架中的头文件,has been modifed。需要删除缓存,在xcode菜但中,找到Locations中的Deri
树莓派4B之OpenCV人脸识别实战:从Haar Cascade到实时检测(保姆级教程)
本教程详细介绍了如何在树莓派4B上部署OpenCV,并利用Haar Cascade算法实现实时人脸识别。内容涵盖从系统环境搭建、算法原理解析到代码逐行讲解与实战调优,为嵌入式AI和计算机视觉初学者提供了一份完整的保姆级实践指南。
OC学习记录, 数组(NSArray与NSMutableArray)
NSArray代表元素有序、可重复的一个集合。NSArray分别提供了类方法和实例方法来创建NSArray,两种创建方式需要传入的参数基本相似,只是类方法以array开头,而实例方法以init开头,下面是创建Array对象的几类常见方法的介绍。 一旦得到NSArray对象,接下来就可以调用它的方法来操作NSArray集合。NSArray集合最大的特点是集合元素有索引,因此,读者查阅NSArray类的参考手册时会注意到它的绝大部分方法都与集合元素的索引有关。 参考NSArray类的文档,可以看到NSArray
电池管理系统(BMS)系列—状态估计之SOH
BMS系列文章,介绍了SOH估计
Python爬虫实战:利用Playwright+Asyncio高效获取淘宝商品价格变化曲线
本文将详细介绍如何使用Python最新技术栈(Playwright+Asyncio)构建一个高效的淘宝商品价格监控爬虫系统。我们将从爬虫基础知识讲起,逐步深入到反爬应对策略、数据存储与分析,最终实现价格变化曲线的可视化展示。文章包含完整的代码实现和详细的技术解析,适合中高级Python开发者学习参考。关键词:Python爬虫、Playwright、Asyncio、淘宝价格监控、数据可视化支持多浏览器(Chromium, Firefox, WebKit)更快的执行速度更丰富的API。
NSArray创建和使用
// // main.m // NSArray // // Created by dingxiaowei on 13-5-12. // Copyright (c) 2013年 dingxiaowei. All rights reserved. // #import <Foundation/Foundation.h> #import "Student.h"...
Rockchip开发系列 - 3.4.GPIO扩展芯片AW95xx和PCA953X(2)
Rockchip开发系列 - 3.3.GPIO扩展芯片AW95xx和PCA953X(2)
20150611_OC之数组NSMutableArray中函数操作
在OC中若想创建一个可变的数组对象,则使用NSMutableArray,该类可以创建一个可变的数组对象,即所在的内存块中的数据可以修改,而不需要重新定义一个新的数组对象. NSArray 创建不可变数组对象 NAMutableArray:创建可变数组对象 数组中的元素都是对象,可以为任意类型的对象,在一个数组中可以存不同类型的对象 数组中存储的是对象的引用(对
时间序列—显著相关性和滞后性分析_python
本文讲述了两个时间序列(信号)的相关性分析,可以利用相关性分析进行特征筛选。此外本文还讲了怎么判断时间序列的滞后性的方法。
华为OD机试 - TLV格式(Python/JS/C/C++ 2025 C卷 100分)
两端通过TLV格式的报文来通信,现在收到对端的一个TLV格式的消息包,要求生成匹配后的(tag,length,valueOffset)列表。和需要匹配的n个tag对应的n行匹配结果,每一行由长度和偏移量组成。第二行:需要匹配的tag数量n(0 < n < 1000)后面N行:需要匹配n个tag值(十进制表示),递增排列。标签10(0A)存在,长度3,valueOffset=2。标签15(0F)长度4,valueOffset=2。标签14(0E)长度2,valueOffset=8。
iOS开发之OC入门(NSArray、NSDictionary、NSNumber、谓词NSPredicate)
框架中的一个类,这个类的对象是用来存储多个数据,具备数组的功能,所以。框架中的一个类,用于存储基本数据类型,可用于存进。由于字典中存储的键值对都必须是对象。值存入字典的时候,需要转换成对象。)一起使用,根据条件进行过滤集合中的对象。以键值对存储数据的数组,需要指定别名。
基于FPGA的车道线检测系统设计
本文设计了一种基于FPGA的车道线检测系统,采用Altera Cyclone IV EP4CE10F17C8作为主控芯片,结合OV7725摄像头和LCD显示屏实现实时车道线检测。系统通过硬件流水线处理架构,依次完成图像采集、灰度转换、中值滤波、Sobel边缘检测和Hough变换直线识别等功能模块。所有模块均采用Verilog HDL实现,充分利用FPGA的并行处理能力,显著提升了系统响应速度。测试结果表明,该系统能够有效检测道路车道线,满足实时性要求,为ADAS系统提供了一种高效的硬件解决方案。
OC语言-----NSArray , NSMutableArray, NSNumber 基本用法
(1)存储多个元素(2)存数元素只能是对象,对象可以使不同类型的(3)数组是一个有序的集合. (4)数组中的元素可以重复 而且重复的对象会成为数组元素 今天我们学了如下NSArray类中常用的几个方法. 1,创建对象 (1)使用便利构造器 arraywithobject 创建对象可以指定多个对象元素元素间用逗号间隔 nil作为数组元素存放的结束标志,遇到 nil 之后的元素都不会放
NTscan扫描工具
ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
Objective-C_NSString、NSArray、NSNumber
讲解NSString和NSMutableString,NSArray和NSMutableArray,NSNumber和NSValue的使用。
深度学习工具包 DeepLearningToolbox
深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[](https://bitdeli.com/free "Bitdeli Badge")
黑马程序员—— Foundation框架NSArray、NSSet、NSDictionary、NSNumber、NSDate、NSValue
——- android培训、java培训、期待与您交流! ———-—NSArrayNSArray:OC数组,它不能存放空值(nil或者0)只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等1.NSArray的基本操作1>最简单数组对象的建立 NSArray *array = [NSArray array]; // 这个array永远是空数组 2>一般数组的建立
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
Objective-C中的NSArray、NSMutableArray、NSNumber详解
——–NSArray——– NSArray是Foundation框架中的重要组成部分,存储多个数据的,具备数组的能力,所以,NSArray是OC中的数组。特点是只能存储OC对象! 特点: 1.基本数据类型不能放到NSArray中; 2.长度是固定的,一旦数组创建完毕之后,元素的长度固定,无法新增,也无法删除元素; 3.每一个元素都是紧挨着的,每一个元素都仍然有自己的...
OC NSArray NSMutableArray 创建 添加 查询 复制 遍历等
NSArray说明 -oc中枚举就是遍历的意思,区别c语言中的枚举 -Foundation中的数组(NSArray,NSMutableArray)是一组有序的对象集合 -数组只能存储对象(类的实例) NSArray使用 -通过下标获取到数组中的各个元素 -与字符串相同,数组分为可变和不可变数组 NSArray注意 -数组中不可以存放基本数据类型,只能存放类的实例(对象) -如若需要将基本数据类型/结构体放入数组中,需要通过NSNumber NSValue进行“封装” NSArray实例.
OC课堂笔记->数组NSArray
OC中数组NSArray NSArray不可变数组 //OC中的数组,只能存对象,不可以存标量;(例如:int,float,double,char....) //1.常量的方式初始化一个数组; NSArray *arr1 = @[@"1",@"2",@"3",@"3"]; //NSLog(@"%@",arr1[3]); //2.便利构造器
OC中的NSNumber、NSArray、NSString的常用方法
和C语言不同在Objective-C语言中有单独的字符串类NSString。C语言中string是由 charASCLL码字符组成OC中字符串是由unicharUnicode字符组成NSString不可变字符串即创建以后内容和长度不能更改NSMutableString可变字符串即创建以后内容还可以修改在使用哟个字符串对象之前首先创建一个新的字符串可以使用实例方法和便利构造器NSString常用的方
OC基础学习——NSArray及其子类NSMutableArray的创建及其常用方法
OC基础学习——NSArray及其子类NSMutableArray的创建及其常用方法
OC之数据对象、NSString、NSArray、NSNumber等
一、使用苹果帮助文档 API : application programming interface 苹果每次IOS版本的升级,都会添加api Foundation框架是Cocoa编程,iOS编程的基础框架,包括:字符串、集合、日期、时间等基础类 NSString和NSMutableString,即不可变字符串和可变字符串。 C语言中,字符串是由char字符数组组成。 OC
Oc基础类型 NSArray NSMutableArray 的一些常用使用方法
OC的数组只能存放对象类型 不能存放C语言的基本数据类型 OC的数组可以存放多种对象类型的数据【@”dfa”, @2, pxd, cc, shuzu】 不能存NSNull的数据 1.创建 NSArray *array = @[@”jack”,@”tom”,@”merry”]; 2.使用方法 NSArray *arr = [[NSArray alloc] ...
OC语言传递c数组,OC数组的简单使用、NSArray
和上一篇文章一样,数组的重要性不言而喻,在OC编程的过程中我们会不断的使用到NSArray,和C语言不同的是,我们这里的数组只能存OC对象类型,不能存C语言基本数据类型,也不能存NSNull类型,但是我们这里的数组可以存多种对象类型,比如,在同一个数组里面,既可以存字符串类型,又可以存对象化了以后的整数类型,甚至是另外一个数组,也可以存其他的对象类型(将C语言的数据类型转换成OC的对象类型下面会讲...
NSNumber有什么用
在OC中已经有许多的基本类型,但是为什么还要有NSNumber呢? 原因就是int,long等基本类型不能被存到NSArray和NSMutabeArray中,因为NSArray和NSMutabeArray中只能存储OC的对象,而int,long等基本类型是不能存入的,但要是需求确实需要存入基本类型的数据怎么办呢?这时候用NSNumber转换一下就能存入了。 例如想存一个1到NSMutabeArray中: NSMutableArray*testArray = [[NSMutableArrayalloc]ini
iOS--NSArray数组的初始化增加元素删除元素
7th,March,2016 1.数组的初始化 1) NSMutableArray *bizArray = [[NSMutableArray alloc] initWithObjects:tmpDict1,tmpDict2,tmpDict3, nil]; 2) 空数组 NSMutableArray *tmpArray = [NSMutableArray array]; 3)
206



被折叠的 条评论
为什么被折叠?



