iOS OC(4) 문자열 NSString 가변 배열 NSMutable Array 가변 배열 NSArray 수치 객체 클래스 NSNumber NSValue 수치 객체 클래스 NSNumber

26635 단어 OC 언어

불변 문자열 NSString


1. 시스템의 클래스를 이용하여 대상을 초기화한다

  • NSString 객체를 만들고 사용자 정의 초기화 방법을 호출하여 NSString *str = [[NSString alloc] initWithString: @"123"];
    NSString *str = @"123";
    NSLog(@"%@", str);
    
    1
  • 2 3
     123
    
  • 시스템의 편리한 구조기 방법으로 대상을 초기화하는 포맷 초기 방법
    NSString *str2 = [NSString stringWithFormat:@"aaa%@", str]; 
    NSLog(@"%@", str2); 
     aaa123
    
  • 2. 창설된 대상을 이용하여 시스템을 호출하는 방법


    먼저 문자열의 대상을 다음과 같이 정의합니다: NSString *str = @“hello world”; 다음은 NSString 클래스에서 자주 사용하는 방법과 해석을 소개합니다

    1. 문자열 길이 얻기

  • @property (readonly) NSUInteger length; length는 문자열 객체의 길이를 저장하는 NSString 클래스의 속성입니다.문법으로 얻을 수도 있고 get 방법으로 값을 얻을 수도 있습니다.
    NSUInteger len = [str length]; //  get 
    NSLog(@"%lu", len);
    1
  • 2

    2. 하위 문자열 가져오기(문자열 캡처)


    참고: 문자열의 각 문자에는 0부터 시작하여 왼쪽에서 오른쪽으로 첫 번째 문자에는 0, 마지막 문자에는 길이-1의 아래 첨자가 있습니다.
  • - (NSString *)substringFromIndex:(NSUInteger)from; 설명: 아래 첨자from(아래 첨자from이 있는 문자 포함)에서 마지막 용법은 다음과 같다.
    NSString *strFrom = [str substringFromIndex:6]NSLog(@"%@", str1);
    1
  • 결과는world
  • - (NSString *)substringToIndex:(NSUInteger)to; 설명: 첫 번째 문자부터 다음 표의 to 위치(아래 표의 to가 있는 문자를 포함하지 않음)로 캡처하는 방법은 다음과 같다.
    NSString *strTo = [str substringToIndex:5];NSLog(@"%@", strTo);
    1
  • 결과는 Hello
  • - (NSString *)substringWithRange:(NSRange)range; 설명: 지정된 범위range에서 문자를 캡처합니다.
  • p.s. NSRange의 정의는 다음과 같다.
    typedefstruct _NSRange { 
        NSUInteger location; //   
        NSUInteger length; //   
    } NSRange; 
                                        //  NSRange 
    NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
        NSRange r;
        r.length = len; 
        return r;
    }
    1
  • 2 3 4 5 6 7 8 8 8 10 10 10 9 10 10 NSRange range = {2, 2}; 또는 NSRange range = NSMakeRange(2, 2);을 통해 NSRange 대상을 생성하고 초기화하는 첫 번째 파라미터는 시작 지점이고 두 번째 파라미터는 range의 길이를 나타낸다.길이가 2인 범위.용법은 다음과 같다.
    NSRange range = NSMakeRange(2, 2);
    NSString *str1 = [str substringWithRange:range];
    NSLog(@"%@", str1);
    1 2 3 결과ll
  • - (NSArray *)componentsSeparatedByString:(NSString *)separator; 설명: 문자열을 구분자로 하고 이 구분자를 만나면 문자열을 구분자 앞과 구분자 뒤의 두 단락으로 구분한다.두 문자열 모두 구분자를 포함하지 않습니다.캡처 결과는 그룹에 저장됩니다.다음과 같은 방법으로 문자열 "20| 캡처http://www.baidu.com"에서""|""앞뒤 문자열 104591310 1 104591810 2 104591810 3 104591810의 결과는 다음과 같습니다(20,"http://www.baidu.com”  )

  • 3. 문자열 결합

  • - (NSString *)stringByAppendingString:(NSString *)aString; 설명: 문자열 aString을 현재 문자열에 연결하는 끝 용법은 다음과 같다.
    NSString *string = @"20|http://www.baidu.com"; 
    NSArray *result = [string componentsSeparatedByString:@"|"]; 
    NSLog(@"%@", result);
    1
  • 2 3 결과는 Hello World!!아니면:
    NSString *string = @"!!";
    NSString *result = [str1 stringByAppendingString:string];
    NSLog(@"%@", result);
    1 2 결과도 Hello World!!
  • -(NSString*)stringByAppendingFormat:(NSString*)format, ...NS_FORMAT_FUNCTION(1,2); 설명: 포맷 결합 문자열의 사용법은 다음과 같다.
    NSString *result = [str1 stringByAppendingString:@"!!"];
    NSLog(@"%@", result);
    1
  • 2 3 결과는 Hello worldaa 또는
    NSString *newString = @"aa";
    NSString *result = [str1 stringByAppendingFormat:@"%@", newString];
    NSLog(@"%@", result);
    1 2 10 10

    4. 문자열 바꾸기

  • - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement NS_AVAILABLE(10_5, 2_0); 설명: 하나의 목표 문자열과 하나의 목적 문자열을 주고 이 문자열에서 검색하면 목표 문자열이 같은 문자열이 나타나면 목적 문자열로 바꾸는 방법은 다음과 같다.
    NSString *result = [str1 stringByAppendingFormat:@"%@", @"aa"];
    NSLog(@"%@", result);
    1
  • 2 결과: ehllo world
  • - (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement NS_AVAILABLE(10_5, 2_0); 설명: 범위별 문자열 교체
    NSString *result = [str1 stringByReplacingOccurrencesOfString:@"he" withString:@"eh"];
    NSLog(@"%@", result);
    1
  • 2 3 결과:he1o world

    5. 같은 문자열

  • - (BOOL)isEqualToString:(NSString *)aString; 설명: 두 문자열이 같은지 아닌지를 판단하여 1을 되돌려주면 0의 용도는 다음과 같다.
    NSRange range = NSMakeRange(2, 2);
    NSString *result = [str1 stringByReplacingCharactersInRange:range withString:@"1"];
    NSLog(@"%@", result);
    1
  • 2 3 4 5 6 10 6 7 결과는 같지 않다.

    6. 문자열 비교

  • - (NSComparisonResult)compare:(NSString *)string;은 다음과 같이 설명한다. 이 문자열과 목표 문자열string을 비교해 보면 두 문자열이 같으면 0을 되돌려주고 이 문자열이 목표 문자열보다 작으면 -1을 되돌려주고 반대로 1을 되돌려준다.
  • NSComparison Result의 정의는 다음과 같습니다.
    NSString *str1 = @"Hello World";
    NSString *str2 = @"Hello world";
    if ([str1 isEqualToString: str2]) {
        NSLog(@" ");
    } else {
        NSLog(@" ");
    }
    1
  • 2 3 4 5 NSENUM은 OC의 매거 방법입니다.괄호 안에 있는 두 개의 매개 변수인 NSInteger와 NSComparisonResult는 각각 매거 방법의 데이터 유형과 매거 방법의 방법명 을 나타낸다

    7. 접두사 포함 판단(접두사)

  • - (BOOL)hasPrefix:(NSString *)aString; 기능: 문자열에 접두사 aString 해석이 있는지 판단: 이 문자열과 목표 문자열 두 글자의 첫 번째 문자를 동시에 훑어보고 목표 문자열이 훑어볼 때까지 일일이 비교한다.다른 문자가 나타나지 않으면 1을 반환하고 다른 문자가 나타나면 0
  • 을 반환합니다
  • - (BOOL)hasSuffix:(NSString *)aString; 기능: 문자열에 접미사 aString 해석이 있는지 판단: 이 문자열과 목표 문자열의 마지막 문자부터 뒤에서 앞으로 옮겨다니며 목표 문자열이 옮겨다닐 때까지 일일이 비교한다.다른 문자가 나타나지 않으면 1을 반환하고 다른 문자가 나타나면 0
  • 을 반환합니다

    8. 문자열 알파벳 대소문자 변환

  • 대문자 @property (readonly, copy) NSString *uppercaseString; 기능: 문자열의 모든 문자를 대문자
  • 으로 변환
  • 소문자 @property (readonly, copy) NSString *lowercaseString; 기능: 문자열의 모든 문자를 소문자
  • 으로 변환
  • 각 단어의 알파벳은 대문자로 변하고 알파벳을 제외한 문자는 소문자 @property (readonly, copy) NSString *capitalizedString; 기능: 문자열의 모든 단어를 자동으로 식별하고 단어의 알파벳은 대문자로 하고 나머지 알파벳은
  • 으로 소문자 한다.

    9. 변하지 않는 문자열 값을 다시 부여하면 그 자체가 아니라 새로운 문자열을 가리키는 방향으로 바뀐다


    가변 문자열 NSMutableString


    가변 문자열 NSMutableString은 NSString에 상속되는 클래스입니다.
    그러나 가변 문자열은 다음과 같은 정의 성명 방식을 사용할 수 없습니다.
    그러나 가변 문자열 NSMutable String은 가변적이기 때문에 상수 영역의 상시 문자열을 가리키게 하면 @ "123"결과는 가변 문자열의 대상str가 가변 문자열의 값을 가리키기 때문에 가변 문자열의 정의에 맞지 않기 때문에 OC는 가변 문자열을 이런 편리한 방식으로 초기화하는 것을 금지합니다
    그러나 NSMutableSring은 NSString에서 계승된 문자열을 다음과 같이 사용할 수 있다. NSMutableString *str = @"123";도 자신의 편리한 구조기 방법을 호출할 수 있다. NSString *str1 = @"123";

    가변 문자열의 일반적인 방법:


    1. 문자열 결합

    typedef NS_ENUM(NSInteger, NSComparisonResult) {
        NSOrderedAscending = -1L,
        NSOrderedSame,
        NSOrderedDescending 
    };
    1 2 3 4 5 6

    2. 문자 삽입

    NSMutableString *str1 = [[NSMutableString alloc] initWithString:@"sss"];은 문자열의 아래에loc로 표시된 문자열 aString을 삽입합니다. 원래loc+1에서 시작된 문자열은 자동으로 삽입된 문자열 aString 뒤에 추가됩니다.

    3. 문자 바꾸기

    NSMutableString *str = [NSMutableString stringWithString:@"sgr"];은 지정된 범위range 내의 문자열을 모두 제거하고 문자열 aString을 자동으로 제거된 위치에 추가하며 끊어진 부분은 자동으로 연결합니다.

    4. 문자 삭제

    - (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc; 범위range 내의 모든 문자를 삭제하고 나머지 문자열은 자동으로 순서대로 연결합니다

    주의해야 할 것은 가변 문자열의 방법 반환 값은void입니다. 변경된 것은 모두 자신이 저장한 문자열이기 때문에 새로운 문자열을 반환할 필요가 없습니다


    변수 없는 배열 NSArray


    NSArray는 객체만 저장할 수 있으므로 일반적으로 동일한 유형의 객체 배열도 컨테이너에 공통적으로 사용되는 초기화 방법입니다.
    //  aString
    - (void)appendString:(NSString *)aString;
    
    //  
    - (void)appendFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
    
    1 2 3 4 5 6 7 8 9
    불변 배열의 객체를 만들려면 다음과 같이 하십시오.
    + (instancetype)array;
    + (instancetype)arrayWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION;
    + (instancetype)arrayWithArray:(NSArray *)array;
    - (instancetype)initWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION;
    - (instancetype)initWithArray:(NSArray *)array;
                                  //  ,  
    + (NSArray *)arrayWithContentsOfFile:(NSString *)path;
                                  //  ,  
    + (NSArray *)arrayWithContentsOfURL:(NSURL *)url;
    1 2 3
    문법당 빠르게 수조 구축하는 방법 - (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString;그룹 요소를 출력하는 방법은 - (void)deleteCharactersInRange:(NSRange)range;을 통해array그룹의 모든 요소를 출력할 수 있지만 중국어를 출력할 수 없습니다.NSArray의 description은 중국어 출력을 지원하지 않지만, 중국어의 유니버설 인코딩을 출력하기 때문입니다
    요소 NSArray *array3 = @[@"str1", @"str2", @"str3"];//array 2 배열의 첫 번째 요소를 아래 첨자로 인쇄할 수도 있습니다. 이때 첫 번째 요소는 문자열 대상이고 NSString 문자열의 description은 중국어 출력을 지원합니다.
    그룹 원소의 첫 번째 원소와 마지막 원소를 얻다
    NSArray *array = [[NSArray alloc] initWithObjects:@"str1", @"str2", @"str3", nil];
    NSArray *array2 = [NSArray arrayWithObjects:@"str1", @"str2", @"str3", nil];
    NSLog(@"%@
    %@"
    ,array, array2);
    1 2
    하나의 불가변수 그룹에 대해 다른 불가변수 그룹을 만들지 않은 상태에서 직접 추가 삭제와 수정을 진행하는 것은 불가능하다는 것을 명심해라

    가변 배열 NSMutable Array


    상용 초기화 방법: NSLog(@"%@", array); 주의해야 할 것은 모든 변수 그룹의 조작이다.모두 가변수 그룹을 초기화한 후에야 진행할 수 있습니다.
    기타 방법을 상용하다
    @property (nonatomic, readonly) id firstObject NS_AVAILABLE(10_6, 4_0);
    @property (nonatomic, readonly) id lastObject;
    1 2 3 4 5 6 7 8

    수치 객체 클래스 NSNumber


    초기화 방법:
    - (void)addObject:(id)anObject; //  
                        //  ,  
    - (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
            //  ,  ,  ,  
    - (void)removeObjectAtIndex:(NSUInteger)index;
                            //  
    - (void)addObjectsFromArray:(NSArray *)otherArray;
    - (void)removeAllObjects;    //  ( )
    1 2
    NSNumber의 역할은 기본 유형의 변수를 대상으로 바꾸어 OC의 수조에 쉽게 저장하는 것이다. 이것은 모든 기본 데이터 형식을 지원하고 모든 기본 데이터 유형의 변수는 NSNumber와 서로 전환할 수 있다.
    또한 이 점을 이용하여 기본 데이터 유형 간의 상호 전환을 완성할 수 있다.예를 들면 다음과 같습니다.
    - (NSNumber *)initWithChar:(char)value NS_DESIGNATED_INITIALIZER;
    + (NSNumber *)numberWithChar:(char)value;
    1 2 3
    물론 통상적인 상황에서 이런 기능은 결코 아무런 난용도 없다.

    NSValue


    구조체 변수를 대상 유형으로 바꾸는 것을 지원합니다.
    NSNumber 및 NSValue를 사용하여 기본 데이터 유형을 NSMutable Array에 저장하고 배열을 반복하여 결과를 얻습니다.
        float a = 5.6;
        NSNumber *num = [NSNumber numberWithFloat:a];
        int b = [num intValue];
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

    좋은 웹페이지 즐겨찾기