OC15数字字符串和集合

#import <Foundation/Foundation.h>

@interface AddressCard : NSObject

-(void)setName:(NSString *) theName;
-(void)setEmail:(NSString *) theEmail;

-(void)setfirstName:(NSString *)first lastName:(NSString *)last;
//联系4
-(NSString *)firstName;
-(NSString *)lastName;
-(NSString *)name;
-(NSString *)email;

//系统生成访问器方法
@property (copy,nonatomic) NSString *name,*email,*firstName,*lastName;

-(void)print;

-(void)setName:(NSString *)theName andEmail:(NSString *) theEmail;
@end
//
//  AddressCard.m
//  OC15数字字符串和集合
//
//  Created by Zoujie on 15/10/6.
//  Copyright ? 2015年 Zoujie. All rights reserved.
//

#import "AddressCard.h"

@implementation AddressCard
{
    NSString *name;
    NSString *email;
}
@synthesize name,email;

-(void)setName:(NSString *)theName
{
//    name = [NSString stringWithString:theName]; 老方法
    if (name != theName)
        name = [NSString stringWithString:theName];//if语句测试发送到访问器方法的对象是否已经存在于实例变量中,如果传入的是同一个对象,就不需要再进行设置。
}
-(void)setEmail:(NSString *)theEmail
{
    if (email != theEmail)
    email = [NSString stringWithString:theEmail];
}
//练习4
-(void)setfirstName:(NSString *)first lastName:(NSString *)last
{
    if (_firstName != first){
        _firstName = [NSString stringWithString:first];
    }
    if (_lastName != last)
        _lastName = [NSString stringWithString:last];

}

-(NSString *)name
{
    return name;
}

-(NSString *)email
{
    return email;
}

-(void)setName:(NSString *)theName andEmail:(NSString *)theEmail
{
    self.name = theName;
    self.email = theEmail;
}

-(void)print
{
    NSLog(@"=================================");
    NSLog(@"|                               |");
    NSLog(@"|%-31s|",[name UTF8String]);//%-31s 表示用31个字符的字段宽度左对齐打印UTF8 C-字符串 修饰结果的作用
    NSLog(@"|%-31s|",[email UTF8String]);
    NSLog(@"|%-31s|",[_lastName UTF8String]);
    NSLog(@"|%-31s|",[_firstName UTF8String]);
    NSLog(@"|                               |");
    NSLog(@"|                               |");
    NSLog(@"=================================");
    
}

-(NSComparisonResult)compareNames:(id)element
{
    
    return [name compare:[element name]];
}
@end
//
//  AddressBook.h
//  OC15数字字符串和集合
//
//  Created by Zoujie on 15/10/6.
//  Copyright ? 2015年 Zoujie. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "AddressCard.h"
@interface AddressBook : NSObject

@property (nonatomic,copy) NSString *bookName;
@property (nonatomic,strong) NSMutableArray *book;

-(instancetype) initWithName:(NSString *)name;
-(void) addCard:(AddressCard *) theCard;
-(NSInteger) entries;//获取卡片(AddressCard)数量
-(void)list;

//通过名称查找地址卡片--假定精确匹配
-(AddressBook *) lookup:(NSString *) theName;
//删除
-(void) removeCard:(AddressCard *)theCard;

//排序
-(void)sort;
@end
//
//  AddressBook.m
//  OC15数字字符串和集合
//
//  Created by Zoujie on 15/10/6.
//  Copyright ? 2015年 Zoujie. All rights reserved.
//

#import "AddressBook.h"

@implementation AddressBook
@synthesize bookName,book;

//设置一个AddressBook的名称和一个空的AddressBook
-(instancetype)initWithName:(NSString *)name
{
    self = [super init];
    if (self){
        bookName = [NSString stringWithString:name];
        book = [NSMutableArray array];
    
    }
    return self;
}

-(instancetype)init
{
    return [self initWithName:@"NoName"];
}

-(void) addCard:(AddressCard *)theCard
{

    [book addObject:theCard];
}

-(NSInteger)entries
{
    return [book count];
}

-(void)list
{
    NSLog(@"======== Contents of :%@ ========",bookName);
    
    for (AddressCard *theCard in book)//快速枚举   for( in)
    {
        NSLog(@"%-20s %-32s",[theCard.name UTF8String],[theCard.email UTF8String]);
    
    }
    
    NSLog(@"=================================================");
    

}
#pragma mark 查找
-(AddressCard *)lookup:(NSString *)theName
{
 for (AddressCard *nextCard in book)
 {
 if ([nextCard.name caseInsensitiveCompare:theName]==NSOrderedSame)
     return nextCard;
 }
    return nil;
    
//    NSIndexSet
    NSUInteger result =[book indexOfObjectPassingTest:^BOOL(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        if ([[obj name] caseInsensitiveCompare:theName] == NSOrderedSame){
            * stop = YES;//查找一个匹配,一个就足够了
            return YES;
        }
        else
            return NO;//继续查找
    }];
    
//    如果找到一个匹配,则查看它
    if (result != NSNotFound)//只有一个元素
        return book[result];
    else
        return nil;
}

#pragma mark 删除
-(void)removeCard:(AddressCard *)theCard
{
    [book removeObjectIdenticalTo:theCard];//方法会删除和参数所有相同的对象。但只有一个对象在数组中出现多次,才会出现这个问题
    
//    [self isEqual:theCard];
}

#pragma mark 排序
-(void)sort
{
//    [book sortUsingSelector:@selector(compareNames:)];//需再AddressCard类中添加compareNames 方法 指定selector方法的比较器对数组排序
    
//    块方法直接排序,不用修改AddressCard类
   [book sortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
        return [[obj1 name] compare:[obj2 name]];
   }];
}
@end
//
//  ViewController.h
//  OC15数字字符串和集合
//
//  Created by Zoujie on 15/10/5.
//  Copyright ? 2015年 Zoujie. All rights reserved.
//

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
//使用Printint类别,将打印方法添加到NSSet
@interface NSSet (Printing)

-(void) print;

@end

@implementation NSSet (Printing)

-(void) print
{
    printf("{");
    
    for (NSNumber *element in self)
        printf(" %li ",(long)[element integerValue]);
               
    
    printf("} \n");
    
}
@end

@interface NSDate (ElapsedDays)

-(unsigned long) elapsedDays:(NSDate *) theDate;
@end

@implementation NSDate (ElapsedDays)

-(unsigned long) elapsedDays:(NSDate *)theDate
{
    NSDate *date = [NSDate date];
    date = theDate;
    return date;
}

@end
@interface ViewController : UIViewController

@end
//
//  ViewController.m
//  OC15数字字符串和集合
//
//  Created by Zoujie on 15/10/5.
//  Copyright ? 2015年 Zoujie. All rights reserved.
//

#import "ViewController.h"
#import "AddressCard.h"
#import "AddressBook.h"
//#import "NSSet(Printing)"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
//    [self studyNSNumber];
    
//    不可变字符串
//    [self studyNSString];
    
//        可变字符串
//    [self studyNSMutableNSString];
//    数组
//    [self studyNSArray];
    
//    地址薄制作
//    [self makeAddressCard];
//    [self makeAddressCardTWO];

//    AddressBook测试
//    [self textAddressBook];
    
//    数组排序
//    [self sortArray];
    
//    NSValue类
//    [self studyNSValue];
    
//    NSDictionary
//    [self studyNSDictionary];
    
    [self studyNSSet];
}

#pragma mark NSNumber
-(void)studyNSNumber
{
//常用基本数据类型int,float,double,long并不是对象
    NSNumber *myNumber,*floatNumber,*intNumber;
    NSInteger myInt;//NSInterger不是一个对象,而是基本数据类型的typedef
    
//    integer型取值
    intNumber = [NSNumber numberWithInt:10];
    intNumber = @10;//字面量语法
    myInt = [intNumber integerValue];
    NSLog(@"%li",(long)myInt);
    
//    long型取值
    myNumber = [NSNumber numberWithLong:0xabcdef];
    NSLog(@"%lx",[myNumber longValue]);
    
//    char
    myNumber = [NSNumber numberWithChar:‘X‘];
    myNumber = @‘X‘;
    NSLog(@"%c",[myNumber charValue]);
    
//    float
    floatNumber = [NSNumber numberWithFloat:10.00];
    floatNumber = @10.00f;
    NSLog(@"%f",[floatNumber floatValue]);
    
//    double
    myNumber = [NSNumber numberWithDouble:12345e+15];
    myNumber = @12345e+15;
    NSLog(@"%lg",[myNumber doubleValue]);
    //发生错误
    NSLog(@"%li",(long)[myNumber integerValue]);
    
//    验证两个Number是否相等
    if ([intNumber isEqualToNumber:floatNumber]==YES)
    {
        NSLog(@"Number is Equal");
    }else
    {
        NSLog(@"Numbers are not equal");
    }
    
    if ([intNumber compare:myNumber]== NSOrderedAscending){
        NSLog(@"First Number is less than second");
    }
   
    
    /*
     //    注意 ****************
     NSNumber *yourNumber = [[NSNumber alloc]initWithInt:20];
     [yourNumber initWithInt:10000];//直接修改会引起程序崩溃,所有数字对象都必须是新创建的;
     */
    
    
//NSDecimalNumber 提供一些四则运算方法
    
}

#pragma mark 字符串
-(void)studyNSString
{
//格式字符 %@ 来显示NSString对象
    NSString *str = @"Programming is fun";
    NSLog(@"%@",str);
    
//    不可变字符串的基本处理方式
    NSString *str1 = @"This is String A";
    NSString *str2 = @"This is String B";
    NSString *res;
    NSComparisonResult compareResult;
    
//计算字符串中得字符
    NSLog(@"LengTh of Str1:%lu",[str1 length]);
//    将一个字符串复制到另一个字符串
    res = [NSString stringWithString:str1];
    NSLog(@"copy:%@",res);
//    将一个字符串复制到另一个字符串的末尾
    str2 = [str1 stringByAppendingString:str2];
    NSLog(@"%@",str2);
//    验证两个字符串是否相等
    if ([str1 isEqualToString:res]==YES)
    {
        NSLog(@"str1 = res");
    }
    else
    {
        NSLog(@"str1 != res ");
    }
//    验证一个字符串是否小于,等于或大于另一个字符串
    compareResult = [str1 compare:str2];
    
    if (compareResult == NSOrderedAscending)
        NSLog(@"str1 < str2");
    else if (compareResult == NSOrderedSame)
        NSLog(@"str1 = str2");
    else if (compareResult == NSOrderedDescending)
        NSLog(@"str1 > str2");
//    将字符串转换为大写
    res = [str1 uppercaseString];
    NSLog(@"Uppercase conversion:%s",[res UTF8String]);
//    将字符串转换为小写
    res = [str1 lowercaseString];
    NSLog(@"Lowercase conversion:%@",res);
    
    NSLog(@"Orugunal string:%@",str1);
    
    NSRange subRange;
//    从字符串中提取前3个字符
    res = [str1 substringToIndex:3];
    NSLog(@"Firest 3 chars of str1 %@",res);
//    提取从索引5开始直到结尾的子字符串
    res = [str1 substringFromIndex:5];
    NSLog(@"Chars from index 5 of str1:%@",res);
//    提取从索引5开始到索引13的子字符串(6个字符)
    res = [[str1 substringFromIndex:8] substringToIndex:6];
    NSLog(@"Chars from index 8 through 13:%@",res);
//    更简单的方法
    res = [str1 substringWithRange:NSMakeRange(8, 6)];
    NSLog(@"Chars from index 8 through 13:%@",res);
//    从另一个字符串中查找一个字符串
    subRange = [str1 rangeOfString:@"String A"];
    NSLog(@"String is at index %lu, length is %lu",subRange.location,subRange.length);
    
    subRange = [str1 rangeOfString:@"String B"];
    
    if (subRange.location == NSNotFound)
        NSLog(@"String not found");
    else
        NSLog(@"String is at index %lu,length is %lu",subRange.location,subRange.length);
    
//    常见的NSString方法
//    NSString stringWithContentsOfFile:<#(nonnull NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError * _Nullable __autoreleasing * _Nullable)#>
//    创建一个新字符串,并将其设置为path指定的文件的内容,使用字符编码enc,如果非零,则返回err中得错误
    
//    [NSString stringWithContentsOfURL:<#(nonnull NSURL *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError * _Nullable __autoreleasing * _Nullable)#>]
//     创建一个新字符串,并将其设置URL的内容,使用字符编码enc,如果非零,则返回err中得错误
    
//    [NSString string];创建一个新的空字符串
    
//    str1 compare:<#(nonnull NSString *)#>
//      比较两个字符串
    
    
}

#pragma mark 可变字符串
-(void)studyNSMutableNSString
{
    NSString *str1 = @"This is String A";
    NSString *search,*replace;
    NSMutableString *mstr;
    NSRange substr;
//从不可变字符串创建可变字符串
    mstr = [NSMutableString stringWithString:str1];
    NSLog(@"%@",mstr);

//插入字符
    [mstr insertString:@"mutable" atIndex:7];
    NSLog(@"%@",mstr);
//插入末尾进行有效拼接
    [mstr insertString:@" and string B" atIndex:[mstr length]];
    NSLog(@"%@",mstr);
//直接使用appendString
    [mstr appendString:@" and string C"];
    NSLog(@"%@",mstr);
//根据范围删除子字符串
    [mstr deleteCharactersInRange:NSMakeRange(16, 13)];
    NSLog(@"%@",mstr);
    
//查找然后将其删除
    substr = [mstr rangeOfString:@"string B and "];
    if (substr.location != NSNotFound)
    {
        [mstr deleteCharactersInRange:substr];
        NSLog(@"%@",mstr);
    }
    
//直接设置为可变的字符串
    [mstr setString:@"This is string A"];
    NSLog(@"%@",mstr);
//替换一些字符
    [mstr replaceCharactersInRange:NSMakeRange(8, 8) withString:@"a mutable string"];
    NSLog(@"%@",mstr);
//    查找和替换
    search = @"This is";
    replace = @"An example of ";
    
    substr = [mstr rangeOfString:search];
    if (substr.location != NSNotFound)
    {
        [mstr replaceCharactersInRange:substr withString:replace];
        NSLog(@"%@",mstr);
    
    }
//    查找和替换所有的匹配项
    search = @"a";
    replace = @"X";
    
    substr = [mstr rangeOfString:search];
    
    while (substr.location != NSNotFound)
    {
        [mstr replaceCharactersInRange:substr withString:replace];
        substr = [mstr rangeOfString:search];
    }
    NSLog(@"%@",mstr);
    

    
//    如果需要把字符串分解为语言符号 ,可以查看NSScanner类
    
    [NSMutableString stringWithCapacity:10];//创建一个初始包含10个字符的字符串
    [[NSMutableString alloc]setString:mstr];//将字符串设置为mstr
    [[NSMutableString alloc] replaceOccurrencesOfString:search withString:replace options:24 range:NSMakeRange(0, [mstr length])];//根据选项options,在指定范围range中用replace替换所有的search.
    
}

#pragma mark NSArray
-(void)studyNSArray
{
    int i ;
//    创建一个包含月份的数组
    NSArray *monthName = [NSArray arrayWithObjects:@"Januay",@"February",@"March",@"April",@"May",@"June",@"July",@"August",@"September",@"October",@"Novermber",@"December", nil];
//    列出数组中得所有元素
    NSLog(@"Month Name");
    NSLog(@"==========");
    
    for (i=0;i<12;i++)
    {
        NSLog(@"%i:%@",i+1,monthName[i]);
    
    }
    printf("\n");
    NSArray *monthNames = @[@"Januay",@"February",@"March",@"April",@"May",@"June",@"July",@"August",@"September",@"October",@"Novermber",@"December"];
    NSLog(@"Month Names");
    NSLog(@"==========");
    
    for (i=0;i<12;i++)
    {
        NSLog(@"%i:%@",i+1,monthNames[i]);
        
    }
    
    NSMutableArray *numbers = [NSMutableArray array];
    for (i = 0;i<10;i++)
    {
        numbers[i][email protected](i);
    }
//    遍历数组于显示其值
    for (i=0;i<10;i++)
    {
        NSLog(@"%@",numbers[i]);
    }
    
//    使用带有%@格式的NSlog显示
    NSLog(@"==========USing a single NSLog");
    NSLog(@"%@",numbers);
}

#pragma mark AddressCard 1
-(void)makeAddressCard
{
    NSString *name = @"Zou JieMac";
    NSString *email = @"[email protected]";
    AddressCard *card1 = [[AddressCard alloc]init];
    [card1 setName:name];
    [card1 setEmail:email];
    [card1 print];
}
#pragma  mark AddressCard 2
-(void)makeAddressCardTWO
{
    NSString *aName = @"Zou JieMac";
    NSString *aEmail = @"[email protected]";
    NSString *bName = @"Chen wenTingSB";
    NSString *bEmail = @"[email protected]";

    AddressCard *cardZ = [[AddressCard alloc]init];
    AddressCard *cardC = [[AddressCard alloc]init];
    
    [cardZ setName:aName andEmail:aEmail];
    [cardC setName:bName andEmail:bEmail];
    
    [cardZ print];
    [cardC print];
}

#pragma mark AddressBook
-(void)textAddressBook
{
    NSString *aName = @"Zoujie Mac";
    NSString *aEmail = @"[email protected]";
    
    NSString *bName = @"Huangshuxian UI";
    NSString *bEmail = @"[email protected]";
    
    NSString *cName = @"Chenwenting SB";
    NSString *cEmail = @"[email protected]";
    
    AddressCard *card1 = [AddressCard new];
    AddressCard *card2 = [AddressCard new];
    AddressCard *card3 = [AddressCard new];
//    AddressCard *card4 = [AddressCard new];
    
    //创建一个新的地址薄
    AddressBook *myBook = [[AddressBook alloc]initWithName:@"Love for Jie AddressBook"];
    
    NSLog(@"Entries in address book after creation:%li",[myBook entries]);
    
//    创建3个地址卡片
    [card1 setName:aName andEmail:aEmail];
    [card2 setName:bName andEmail:bEmail];
    [card3 setName:cName andEmail:cEmail];
    
//    将地址卡片添加到地址薄
    [myBook addCard:card1];
    [myBook addCard:card2];
    [myBook addCard:card3];
    
    NSLog(@"Enter in address book after adding cards:%li",[myBook entries]);
    
//    列出地址薄所有条目
    [myBook list];
    
//    通过名字查找一个人
    NSLog(@"lookup Huangshuxian");
    AddressCard *myCard;
    myCard = [myBook lookup:@"Huangshuxian UI"];
    
    if (myCard != nil)
    {
        [myCard print];
    }
    else
        NSLog(@"Not found");
    
    NSLog(@"lookup hanyifei");
    myCard = [myBook lookup:@"hanyifei"];
    
    if (myCard != nil)
    {
        [myCard print];
    }
    else
        NSLog(@"Not found");
    
//    从电话薄中删除
    myCard =[myBook lookup:@"Chenwenting SB"];
    [myBook removeCard:myCard];
    [myBook list];
    
}

-(void)sortArray
{
    NSString *aName = @"Zoujie Mac";
    NSString *aEmail = @"[email protected]";
    
    NSString *bName = @"Huangshuxian UI";
    NSString *bEmail = @"[email protected]";
    
    NSString *cName = @"Chenwenting SB";
    NSString *cEmail = @"[email protected]";
    
    AddressCard *card1 = [AddressCard new];
    AddressCard *card2 = [AddressCard new];
    AddressCard *card3 = [AddressCard new];
    //    AddressCard *card4 = [AddressCard new];
    
    //创建一个新的地址薄
    AddressBook *myBook = [[AddressBook alloc]initWithName:@"Love for Jie AddressBook"];
    
    NSLog(@"Entries in address book after creation:%li",[myBook entries]);
    
    //    创建3个地址卡片
    [card1 setName:aName andEmail:aEmail];
    [card2 setName:bName andEmail:bEmail];
    [card3 setName:cName andEmail:cEmail];
    
    //    将地址卡片添加到地址薄
    [myBook addCard:card1];
    [myBook addCard:card2];
    [myBook addCard:card3];
    
    NSLog(@"Enter in address book after adding cards:%li",[myBook entries]);
    
    //    列出地址薄所有条目
    [myBook list];
    
    [myBook sort];
    [myBook list];
    
//    常用的NSArray方法
    NSArray *arrayText;
    [arrayText containsObject:myBook];//确定数组中是否包含对象
    [arrayText count];//数组元素个数
    [arrayText lastObject];//返回数组最后的对象
    [arrayText objectAtIndex:1];//存储在元素1的对象
    [arrayText makeObjectsPerformSelector:@selector(textArray)];//将selector指示的消息发送给数组中得每个元素
    
    NSMutableArray *MutableArrayText;
    [MutableArrayText initWithCapacity:2];//指定初始的size给新的数组
    [MutableArrayText addObject:myBook];//对象添加到数组的末尾
    [MutableArrayText insertObject:card1 atIndex:3];//将对象插入到数组的序号3的位置
    [MutableArrayText replaceObjectAtIndex:1 withObject:card2];//将序号1的对象用card2替换
    [MutableArrayText removeObjectAtIndex:2];//删除数组序号为2的元素
}

-(void)textArray
{
    return;
}
#pragma mark NSValue类
-(void)studyNSValue
{
//将结构体转化为对象
    CGPoint myPoint;
    CGSize mySize;
    CGRect myRect;
    NSValue *pointObjc;
    NSMutableArray *touchPoints = [NSMutableArray array];
    
    myPoint.x = 100;
    myPoint.y = 200;
    
    mySize.height = 20;
    mySize.width = 40;
    
    myRect.origin = myPoint;
    myRect.size = mySize;
    
    pointObjc = [NSValue valueWithCGPoint:myPoint];
    [touchPoints addObject:pointObjc];
    
    pointObjc = [NSValue valueWithCGSize:mySize];
    [touchPoints addObject:pointObjc];
    
    pointObjc = [NSValue valueWithCGRect:myRect];
    [touchPoints addObject:pointObjc];
    NSLog(@"%@",touchPoints);
    
//    CGPoint youPoint;
//    NSLog(@"%@",[[touchPoints lastObject]rectValue]);
}

#pragma mark NSDictionary
-(void)studyNSDictionary
{
    NSMutableDictionary *glossary = [NSMutableDictionary dictionary];
    
//    存储三个条目在类别中
    [glossary setObject:@"The Men like a girl" forKey:@"first_love"];
    [glossary setObject:@"The Men must earn a lot of money" forKey:@"because_life"];
    [glossary setObject:@"What the Men best like" forKey:@"i_know"];
    
    NSLog(@"%@",[glossary objectForKey:@"first_love"]);
    NSLog(@"%@",[glossary objectForKey:@"because_life"]);
    NSLog(@"%@",[glossary objectForKey:@"i_know"]);
    
//    新语法 dict[key] = object
    glossary[@"boy"] = @"I love you so much";
    glossary[@"girl"] = @"you are my best love";
    glossary[@"life"] = @"Family include men and women ,girl and boy,dog and cat";
    
    NSLog(@"%@",glossary[@"boy"]);
    NSLog(@"%@",glossary[@"girl"]);
    NSLog(@"%@",glossary[@"life"]);
    
//    打印字典中所有的键值对,和数组对象不一样,字典对象是无序的
    for (NSString *key in glossary)
    {
        NSLog(@"%@:%@",key,[glossary objectForKey:key]);
    }
    
//    常用的NSDictionary方法
//     initWithObjectsAndKeys:@"obj1",@"key1",@"obj2",@"key2", nil   将新分配的词典初始化为键-对象{key1,obj1}{key2,obj2}
//    NSArray *sortKey = [glossary keysSortedByValueUsingSelector:<#(nonnull SEL)#>] 返回词典中得键数组,它根据selector指定的比较方法进行排序
    
}

#pragma  mark 集合NSSet
-(void)studyNSSet
{
    NSMutableSet *set1 = [NSMutableSet setWithObjects:@1,@3,@5,@10, nil];
    NSSet *set2 = [NSSet setWithObjects:@-5,@100,@3,@5, nil];
    NSSet *set3 = [NSSet setWithObjects:@12,@200,@3, nil];
    
    NSLog(@"set1:");
    [set1 print];
    
    NSLog(@"set2:");
    [set2 print];
    
//    相等性测试
    if ([set1 isEqualToSet:set2]== YES)
    {
        NSLog(@"set1 equals set2");
    }
    else
    {
        NSLog(@"set1 is not equal to set2");
    }
    
//    成员测试
    if ([set1 containsObject:@10]==YES)
        NSLog(@"set1 contains 10");
    else
        NSLog(@"set1 does not contain 10");
    
    if ([set2 containsObject:@10]==YES)
        NSLog(@"set2 contains 10");
    else
        NSLog(@"set2 does not contain 10");
//    在可变集合SET1中添加和移除对象
    [set1 addObject:@4];
    [set1 removeObject:@10];
    NSLog(@"set1 after adding 4 and removing 10:");
    [set1 print];
//    获得两个集合的交集
    [set1 intersectSet:set2];
    NSLog(@"set1 intersect set2:");
    [set1 print];
//    两个集合的并集
    [set1 unionSet:set3];
    NSLog(@"set1 union set3");
    [set1 print];
    
//    常用NSSet方法
    [set2 anyObject];//返回集合中任一对象
    [set2 containsObject:@10];//确定集合是否包含对象obj
    [set2 member:@10];//使用isEquak:方法确定集合是否包含OBJ
    
//    NSIndexSet 用于存储有序的索引到某种数据结构,比如数组
}
@end
时间: 2024-10-07 05:26:03

OC15数字字符串和集合的相关文章

Swift 数组、字符串、集合与字典详解

今天我们来看几个最基本的数据结构:数组,字符串,集合和字典. 数组 数组是最基本的数据结构.Swift编程语言中改变了以前Objective-C时代NSMutableArray和NSArray分开的做法,统一到了Array唯一的数据结构.下面是最基本的一些实现. 1 2 3 4 5 6 7 8 9 10 11 // 声明一个不可修改的数组 let nums = [1, 2, 3] let nums = [Int](count: 5, repeatedValue: 0) // 声明一个可以修改的数

Swift的基础,操作符,字符串和集合类型

这篇文章主要讲解苹果Swift官方指南的第二章前四节的要点内容,如果想看完整的英文文档可以去苹果开发者页面下载. Basic 声明常量let 声明变量var 注释依旧使用"//" "/**/", 注意这里"/**/"在Swift可以嵌套使用 表达式结尾不再有分号 整数 你可以声明为Int或者UInt,他们本身适应不同平台(64位, 32位),类似于NSInteger,NSUInteger 也可以直接声明为指定字节数的Int,如: Int8, In

Python基础语法&mdash;字符串&amp;语句&amp;集合

Python字符串 Python中不支持char单字符类型,单字符在Python中也是一个字符串 Python字符串更新 更新Python字符串方法 1234 var1 = 'Hello World!'print "Updated String :- ", var1[:6] + 'Python' 实际执行效果为 Updated String :- Hello Python Python转义字符 Python字符串运算符 Python字符串格式化 Python三引号(triple quo

【C语言】将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)

#include <stdio.h> /* 编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数.负浮点数) 例如:"12.34" 返回12.34 "-123.34" 返回-123.34 函数原型:double my_atof(char *str) {} */ double my_atof(char *str) { double m=0,n=0,x=1; int flag=1; int flag2=0; if(*str=='-') //

【C语言】编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数)

/* 编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数.负整数) 例如:"12" 返回12 "-123" 返回-123 函数原型:int my_atof(char *str) */ #include <stdio.h> int my_atof(char *str) { int flag=0; int m=0; if(*str=='-') { flag=1; str++; } while(*str!='\0') { if(*str<

将数字字符串转化为对应数字输出(不考虑溢出)

使用c语言编写一个函数,将一个数字字符串转化为对应数字,不考虑溢出,(比如"12.34"转换为数字:12.34),考虑异常输入 思考:异常如输入字幕等等,也有可能输入'+','-'号等, 程序如下: #include<stdio.h> #include<stdlib.h> #include<assert.h> double my_atof(const char* str) { assert(str); double num = 0; int flag

面向对象基础(class0425)字符串与集合

常用类库 学习.net就是学习它的无数个类库怎么用,先看两个简单的 String 字符串,不可变特性.字符串可以看成字符数组 属性 Length 方法 IsNullOrEmpty() 静态方法 ToCharArray() ToLower() string不可变性 ToUpper() Equals() 忽略大小写的比较 Join() 静态方法 Format () 静态方法 IndexOf() LastIndexOf() Substring() Split() Replace() Trim()  C

java数字字符串累加1的解决方案

近期操作项目遇到这样的问题,研究了下搞出了一个解决方案. //num也可以是在数字字符串里面截取的,比如我有14位的数字字符串前六位是市级,7,8位代表县区,后两位代表乡镇,最后四位是累计+1的,这个时候你就可以根据前10位查出最大的是多少,然后用最大的+1得出新的最大的.. //你要+1的字符串 String num="0000"; //转成整数并执行累加操作,但是可能位数变少了,怎么办呢? int i=Integer.valueOf(Num)+1; //为了拼接字符串使用 Stri

多个数字和数字字符串混合运算规则

在说规则之前,我们先来看一下下面的代码的结果: 1 console.log(1 + "2" + "2"); // 122 2 3 console.log(1 + +"2" + "2"); // 32 4 5 console.log(1 + -"1" + "2"); // 02 6 7 console.log(+"1" + "1" + "2