//
//  NSArray-Addtions.h
//  JasonDevelop
//
//  Created by Jason Lee on 10/29/14.
//  Copyright (c) jasondevelop. All rights reserved.
//

@import Foundation;

@interface NSArray (Addtions)


/**
 *  배열내 스트링 객체 중, 동일한 문자열을 가진 객체를 반환함.
 *
 *  @param key     key
 *  @param aString string
 *
 *  @return object
 */
- (id)objectKey:(NSString *)key eqaulToString:(NSString *)aString;

/**
 *  배열내 필터링 조건에 일치하는 객체를 반환함.
 *
 *  @param format 필터
 *
 *  @return 일치하는 Object
 */
- (id)objectByUsingPredicateFormat:(NSString *)format, ...;

/**
 *  오브젝트 인자와 동일한 오브젝트를 찾아 리턴함.
 *
 *  @param description 서브 배열 description
 *  @param aObject     찾을 Object
 *
 *  @return 동일 Object
 */
- (id)objectInSubArrays:(NSString *)description as:(id)aObject;

/**
 *  서브 배열에서 조건 - 필터링된 새로운 배열을 리턴함.
 *
 *  @param description 서브 배열 description
 *  @param pred        필터
 *
 *  @return array
 */
- (NSArray *)matchedArrayInSubArrays:(id)description predicate:(NSPredicate *)pred;

/**
 *  서브 배열에서 조건 - 필터링된 새로운 배열을 리턴함.
 *
 *  @param description 서브 배열 description
 *  @param format      predicate 포맷 필터
 *
 *  @return array
 */
- (NSArray *)matchedArrayInSubArrays:(id)description predicateFormat:(NSString *)format, ...;

/**
 *  서브 배열에서 associated된 오브젝트와 조건을 매칭하여 일치하는 오브젝트를 리턴함.
 *
 *  @param description 서브 배열 description
 *  @param objectName associated object name
 *  @param condition  condition
 *
 *  @return array
 */
- (NSArray *)matchedArrayInSubArrays:(id)description objectName:(NSString *)objectName condition:(BOOL)condition;


/**
 *  배열내의 객체에 associated된 오브젝트와 조건을 매칭하여 일치하는 오브젝트를 리턴함.
 *
 *  @param objectName associated object name
 *  @param condition  condition
 *
 *  @return 일치하는 오브젝트
 */
- (id)matchedObjectName:(NSString *)objectName condition:(BOOL)condition;

/**
 *  배열내의 객체에 associated된 오브젝트의 조건에 일치하는 오브젝트 배열을 리턴함.
 *
 *  @param objectName associated object name
 *  @param condition  condition
 *
 *  @return 일치하는 오브젝트 배열
 */
- (NSArray *)matchedArrayByObjectName:(NSString *)objectName condition:(BOOL)condition;



- (NSArray *)filteredArrayUsingPredicateFormat:(NSString *)format, ...;


- (NSString *)jsonStringWithPrettyPrint:(BOOL)prettyPrint;



@end
