---------------- ASP.Net+Unity开发、.Net培训、期待与您交流!----------------
《5 8.Foundation7-NSArray的创建和遍历》学习总结
1、NSArray用来存储对象的有序列表,它是不可变的。
2、NSArray不能存储C语言中的基本数据类型。
3、创建一个空的数组。
NSArray *array = [NSArray array];
4、创建一个有1个元素的数组。
NSArray *array = [NSArray arrayWithObject:@"123"];
5、创建一个有多个元素的数组。
NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];
6、containsObject:判断数组是否包含了某个元素。
7、lastObject:获取数组的最后一个元素。
8、objectAtIndex:获取数组的某个元素。
9、indexOfObject:获取元素在数组中的位置。
10、当把一个对象添加进数组中时,这个对象的计数器会加1,也就是说数组会对它做一次retain操作。
11、数组被销毁的时候,会对内部的所有元素做一次release操作。
12、将两个对象添加进数组中。
NSArray *array = [[NSArray alloc] initWithObjects:stu1, stu2, nil];
13、将数组里面的所有对象都调用test方法。
[array makeObjectsPerformSelector:@selector(test)];
14、遍历数组方法1。
Student *stu1 = [Student student];
NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil];
int count = array.count;
for (int i = 0; i<count; i++) {
id obj = [array objectAtIndex:i];
NSLog(@"%i-%@", i, obj);
}
15、遍历数组方法2。
Student *stu1 = [Student student];
NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil];
// 快速遍历
int i =0;
for (id obj in array) {
NSLog(@"%i-%@", i, obj);
i++;
}
16、遍历数组方法3。
Student *stu1 = [Student student];
NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil];
[array enumerateObjectsUsingBlock:
^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%i-%@", idx, obj);
// 如果索引为1,就停止遍历
if (idx == 1) {
// 利用指针修改外面BOOL变量的值
*stop = YES;
}
}];
17、遍历数组方法4。
Student *stu1 = [Student student];
NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil];
// 获取数组的迭代器
// NSEnumerator *enumerator = [array objectEnumerator];
// allObjects是取出没有被遍历过的对象
NSArray *array2 = [enumerator allObjects];
NSLog(@"array2:%@", array2);
// 获取下一个需要遍历的元素
id obj = nil;
while (obj = [enumerator nextObject]) {
NSLog(@"obj=%@", obj);
}
《5 9.Foundation8-NSArray的排序》学习总结
1、添加一个元素,返回一个新的NSArray。
- (NSArray *)arrayByAddingObject:(id)anObject;
2、添加otherArray的所有元素,返回一个新的NSArray。
- (NSArray *)arrayByAddingObjectsFromArray:(NSArray *)otherArray;
3、截取range范围的数据元素。
- (NSArray *)subarrayWithRange:(NSRange)range;
4、用separator作为拼接符将数组元素拼接成一个字符串。
- (NSString *)componentsJoinedByString:(NSString *)separator;
5、将一个NSArray持久化到文件中去。
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
6、数组排序1。
NSArray *array = [NSArray arrayWithObjects:@"2", @"3", @"1", @"4", nil];
// 返回一个排好序的数组,原来数组的元素顺序不会改变
// 指定元素的比较方法:compare:
NSArray *array2 = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"array2:%@", array2);
7、数组排序2。
Student *stu1 = [Student studentWithFirstname:@"MingJie" lastname:@"Li"];
Student *stu2 = [Student studentWithFirstname:@"LongHu" lastname:@"Huang"];
Student *stu3 = [Student studentWithFirstname:@"LianJie" lastname:@"Li"];
Student *stu4 = [Student studentWithFirstname:@"Jian" lastname:@"Xiao"];
NSArray *array = [NSArray arrayWithObjects:stu1,stu2,stu3, stu4, nil];
// 指定排序的比较方法
NSArray *array2 = [array sortedArrayUsingSelector:@selector(compareStudent:)];
NSLog(@"array2:%@", array2);
8、数组排序3。
Student *stu1 = [Student studentWithFirstname:@"MingJie" lastname:@"Li"];
Student *stu2 = [Student studentWithFirstname:@"LongHu" lastname:@"Huang"];
Student *stu3 = [Student studentWithFirstname:@"LianJie" lastname:@"Li"];
Student *stu4 = [Student studentWithFirstname:@"Jian" lastname:@"Xiao"];
NSArray *array = [NSArray arrayWithObjects:stu1,stu2,stu3, stu4, nil];
// 利用block进行排序
NSArray *array2 = [array sortedArrayUsingComparator:
^NSComparisonResult(Student *obj1, Student *obj2) {
// 先按照姓排序
NSComparisonResult result = [obj1.lastname compare:obj2.lastname];
// 如果有相同的姓,就比较名字
if (result == NSOrderedSame) {
result = [obj1.firstname compare:obj2.firstname];
}
return result;
}];
NSLog(@"array2:%@", array2);
9、数组排序4。
Student *stu1 = [Student studentWithFirstname:@"MingJie" lastname:@"Li" bookName:@"book1"];
Student *stu2 = [Student studentWithFirstname:@"LongHu" lastname:@"Huang" bookName:@"book2"];
Student *stu3 = [Student studentWithFirstname:@"LianJie" lastname:@"Li" bookName:@"book2"];
Student *stu4 = [Student studentWithFirstname:@"Jian" lastname:@"Xiao" bookName:@"book1"];
NSArray *array = [NSArray arrayWithObjects:stu1,stu2,stu3, stu4, nil];
// 1.先按照书名进行排序
// 这里的key写的是@property的名称
NSSortDescriptor *bookNameDesc = [NSSortDescriptor sortDescriptorWithKey:@"book.name" ascending:YES];
// 2.再按照姓进行排序
NSSortDescriptor *lastnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"lastname" ascending:YES];
// 3.再按照名进行排序
NSSortDescriptor *firstnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"firstname" ascending:YES];
// 按顺序添加排序描述器
NSArray *descs = [NSArray arrayWithObjects:bookNameDesc, lastnameDesc, firstnameDesc, nil];
NSArray *array2 = [array sortedArrayUsingDescriptors:descs];
NSLog(@"array2:%@", array2);
《6 0.Foundation9-NSMutableArray》学习总结
1、NSMutableArray是可变的NSArray,是NSArray的子类,可以随意的添加或删除元素。
2、NSMutableArray的初始化。
+ (instancetype)arrayWithCapacity:(NSUInteger)numItems;
- (id)initWithCapacity:(NSUInteger)numItems;
3、NSMutableArray可以使用父类NSArray的方法。
4、当一个元素被加到集合中时,会执行一次retain操作。
5、当一个元素从集合中移除时,会执行一次release操作。
6、当集合被销毁时,集合里面的所有元素都会执行一次release操作。
7、设置集合元素。
- (void)setArray:(NSArray *)otherArray;
8、添加一个元素。
- (void)addObject:(id)object;
9、添加otherArray的全部元素到集合中。
- (void)addObjectsFromArray:(NSArray *)otherArray;
10、在index位置插入一个元素。
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
11、在indexes指定的位置分别插入objects中的元素。
- (void)insertObjects:(NSArray *)objects atIndexes:(NSIndexSet *)indexes;
12、删除最后一个元素。
- (void)removeLastObject;
13、删除所有的元素。
- (void)removeAllObjects;
14、删除index位置的元素。
- (void)removeObjectAtIndex:(NSUInteger)index;
15、删除indexes位置的所有元素。
- (void)removeObjectsAtIndexes:(NSIndexSet *)indexes;
16、删除特定的元素。
- (void)removeObject:(id)object;
17、在range范围内查找特定的元素进行删除。
- (void)removeObject:(id)anObject inRange:(NSRange)range;
18、删除同时存在于otherArray和当前集合的所有元素。
- (void)removeObjectsInArray:(NSArray *)otherArray;
19、删除range范围内的所有元素。
- (void)removeObjectsInRange:(NSRange)range;
20、用anObject替换index位置对应的元素。
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
21、用objects中的元素分别替换indexes对应位置的元素。
- (void)replaceObjectsAtIndexes:(NSIndexSet *)indexes withObjects:(NSArray *)objects;
22、用otherArray中的otherRange范围内的元素替换当前集合range范围内的元素。
- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray range:(NSRange)otherRange;
23、用otherArray中的元素替换当前集合range范围内的元素。
- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray;
24、交换idx1和idx2位置的元素。
- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;
《6 1.Foundation10-NSDictonary》学习总结
1、NSDictonary作用是通过唯一的key找到对应的value,是不可变的。
2、返回字典的key数。
- (NSUInteger)count;
3、比较两个字典。
- (BOOL)isEqualToDictionary:(NSDictionary *)otherDictionary;
4、将一个NSDictonary持久化到文件中去。
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
5、返回所有的key。
- (NSArray *)allKeys;
6、返回anObject元素对应的所有key。
- (NSArray *)allKeysForObject:(id)anObject;
7、返回所有的value。
- (NSArray *)allValues;
8、根据key返回对应的value。
- (id)objectForKey:(id)key;
9、返回keys对应的所有value,如果没有对应的value,用marker代替。
- (NSArray *)objectsForKeys:(NSArray *)keys notFoundMarker:(id)marker;
10、遍历字典1。
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
@"v3", @"k3", nil];
// 遍历字典的所有key
for (id key in dict) {
id value = [dict objectForKey:key];
NSLog(@"%@=%@", key, value);
11、遍历字典2。
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
@"v3", @"k3", nil];
// key迭代器
NSEnumerator *enumer = [dict keyEnumerator];
id key = nil;
while ( key = [enumer nextObject]) {
id value = [dict objectForKey:key];
NSLog(@"%@=%@", key, value);
}
12、遍历字典3。
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
@"v3", @"k3", nil];
[dict enumerateKeysAndObjectsUsingBlock:
^(id key, id obj, BOOL *stop) {
NSLog(@"%@=%@", key, obj);
}];
《6 2.Foundation11-NSMutableDictonary》学习总结
1、NSMutableDictionary是可变的NSDictonary,是NSDictonary的子类。
2、NSMutableDictionary可以使用父类NSDictonary的方法。
3、NSMutableDictionary的初始化。
+ (instancetype)dictionaryWithCapacity:(NSUInteger)numItems;
- (id)initWithCapacity:(NSUInteger)numItems;
4、设置当前集合的元素。
- (void)setDictionary:(NSDictionary *)otherDictionary;
5、添加一个键值对。
- (void)setObject:(id)anObject forKey:(id)aKey;
6、添加otherDictionary的所有元素到当前集合中。
- (void)addEntriesFromDictionary:(NSDictionary *)otherDictionary;
7、删除所有元素。
- (void)removeAllObjects;
8、删除akey对应的值。
- (void)removeObjectForKey:(id)aKey;
9、删除keyArray中所有对应的值。
- (void)removeObjectsForKeys:(NSArray *)keyArray;