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]=@(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 = @"zj89011810@163.com";
    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 = @"zj89011810@163.com";
    NSString *bName = @"Chen wenTingSB";
    NSString *bEmail = @"305130241@qq.com";

    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 = @"zj89011810@163.com";
    
    NSString *bName = @"Huangshuxian UI";
    NSString *bEmail = @"xiaoluoli@sina.com";
    
    NSString *cName = @"Chenwenting SB";
    NSString *cEmail = @"bigchest@qq.com";
    
    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 = @"zj89011810@163.com";
    
    NSString *bName = @"Huangshuxian UI";
    NSString *bEmail = @"xiaoluoli@sina.com";
    
    NSString *cName = @"Chenwenting SB";
    NSString *cEmail = @"bigchest@qq.com";
    
    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
相關文章
相關標籤/搜索