黑马程序员——Foundation学习总结7-11

来源:互联网 发布:行知中学官网 编辑:程序博客网 时间:2024/04/28 09:58

---------------- 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;

---------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------


----------------详细请查看:www.itheima.com-----------------------------------------


0 0
原创粉丝点击