2010년 5월 9일 일요일

MPMediaQuery Class Reference

MPMediaQuery Class Reference
상속 : NSObject
프로토콜 : NSCoding / NSCopying / NSObject(NSObject)
프레임워크 : /System/Library/Frameworks/MediaPlayer.framework
사용가능한 버전 : iPhone OS 3.0 이상
관련된 가이드 : iPod Library Access Programming Guide
정의 : MPMediaQuery.h


개요
MPMediaQuery 오브젝트, 또는 미디어 쿼리는 필터나 그룹핑 타입의 방법으로 iPod 라이브러리로부터 미디어 아이템의 셋을 열거한다.  두 방법 모두 옵션이다; 무제한 쿼리는 전체 라이브러리에 매치 한다.
쿼리는 많아야 하나의 그루핑 타입을 가진다.  쿼리의 필터는 몇개의 미디어 프로퍼티 프리디케이트들로 구성될 수 있다.  당신은 MPMediaItem 클래스 레퍼런스에서 설명하는 프로퍼티 키들을 사용하여 MPMediaPropertyPredicate 클래스 레퍼런스에서 설명하는 메서드들을 사용하여 필터들을 만든다.

쿼리를 생성 및 구성한 후에, 당신은 이것을 미디어 아이템 또는 미디어 아이템 컬렉션들을 컴색하는데 사용한다.  컬렉션들은 MPMediaCollection 클래스 레퍼런스에 설명되어 있다.

이 클래스는 각 그루핑 타입에 사용하며, 대부분의 경우에 iPod 라이브러리의 서브셋에 해당하는 다수의 편리한 생성자들을 포함한다.  [표 1] 은 이 생성자들의 기능을 요약한다. 필터 열에 들어가는 자세한 설명은 MPMediaItem 클래스 레퍼런스를 보도록 하자.  그루핑 타입 열에 들어가는 설명은 "Media Item Collection Grouping Keys"를 보도록 하자.

[표 1] MPMediaQuery 클래스의 편리한 생성자들


태스크
미디어 쿼리 생성
여기에서 볼 수 있는 클래스 매서드들은 "미디어 쿼리 구성"에서 설명되는 바와 같이 직접 사용하거나 수정할 수 있는 쿼리를 생성한다.  각 클래스 메서드는, 쿼리의 groupingType 속성을 자동으로 메서드의 이름으로 설정한다.  예를 들어, albumsQuery 메서드는 MPMediaGroupingAlbum의 그루핑 타입을 할당한다.  그루핑 타입은 쿼리로부터 얻을 수 있는 미디어 아이템 컬렉션의 성질을 열거한다.  각 메서드의 토론 섹션에서 설명된 바와 같이 몇몇의 클래스 메서드들은 모든 iPod 라이브러리와 같으며, 다른 것들은 서브셋과 같다.

+ albumsQuery
+ artistsQuery
+ songsQuery
+ playlistsQuery
+ podcastsQuery
+ audiobooksQuery
+ compilationsQuery
+ composersQuery
+ genresQuery
- init
- initWithFilterPredicates:

미디어 쿼리 구성
  filterPredicates property
  groupingType property
- addFilterPredicate:
- removeFilterPredicate:


미디어 쿼리 수행
당신은 아이팟 라이브러리로부터 미디어 아이템들이나 미디어 아이템 컬렉션들을 items나 collections 접근 메서드들을 호출함으로써 특정 배열을 얻는다.
items property
collections property


속성
Objective-C 속성에 대한 자세한 내용은 The Objective-C Programming Language 의 "Properties"를 보도록 하자.

collections
미디어 아이템 컬렉션들의 배열은 쿼리의 미디어 프로퍼티 프리디케이트와 매치하는 아이템들을 담고 있다.
@property (nonatomic, readonly) NSArray *collections;

토론
리턴되는 컬렉션의 배열은 미디어 쿼리의 groupingType에 의해 그룹화되고 정렬된다.  다음의 코드 스니펫은 이 속성을 어떻게 사용하는지를 나타낸다:

//미디어 쿼리 열거; 이것은 iPod 라이브러리와 매치한다. 
//왜냐하면 이것은 미디어 프로퍼티 프리디케이트를 포함하고 있지 않기 때문이다.
MPMediaQuery *everything = [[MPMediaQuery alloc] init];

//미디어 아이템을 이용해서 그룹짓는 미디어 쿼리를 구성;
//여기에서는 아티스트로 그룹화 한다.
[everything setGroupingType:MPMediaGroupingArtist];

//쿼리로 부터 미디어 아이템 컬렉션들을 얻는다
NSArray *collections = [everything collections];

각 collections 배열의 요소는 이제 미디어 아이템 컬렉션을 포함하고 있다. 각 컬렉션은 개별 아티스트로 나눠진 아이팟 라이브러리의 미디어 아이템들을 포함한다.  이 배열의요소들은 아티스트 이름으로 정렬되어 있다.

그룹핑 타입으로 가능한 것들은 "Media Item Collection Grouping Keys"를 참조하도록 하자.
이것은 iPhone OS 3.0 이상에서 사용가능하며 MPMediaQuery.h 에 선언되어 있다.


filterPredicates
미디어 쿼리의 미디어 프로퍼티 프리디케이트.
@property (nonatomic, retain) NSSet *filterPredicates;

토론
MPMediaItem Class일반적인 미디어 아이템 속성 키들팟캐스트 아이템 프로퍼티 키들의 목록에 프리디케이트를 구성하는데 사용할 수 있는 키들이 포함되어 있다.

iPhone OS 3.0 이상에서 사용가능하며 MPMediaQuery.h에 선언되어 있다.


groupingType
미디어 쿼리에서 얻어지는 콜렉션들을 위한 그룹핑
@property (nonatomic) MPMediaGrouping groupingType;

토론
기본 그룹핑 타입은 MPMediaGroupingTitle 이다. 사용가능한 그룹핑 타입의 목록은 "Media Item Collection Grouping Keys"를 보도록 하자.

iPhone OS 3.0 이상에서 사용가능하며 MPMediaQuery.h에 선언되어 있다.


items
미디어 쿼리의 프리디케이트에 대입되는 미디어 아이템들의 배열
@property (nonatomic, readonly) NSArray *items;

토론
프리디케이트에 매치되는 아이템이 없다면, 이 메서드는 빈 배열을 리턴한다. 에러가 날 때는 nil을 리턴한다.

iPhone OS 3.0 이상에서 사용가능하며  MPMediaQuery.h에 선언되어 있다.



클래스 메서드
albumsQuery
뮤직 아이템들과 매치하고, 컬렉션을 앨범이름으로 그룹 및 정렬하는 미디어 쿼리를 생성.
+ (MPMediaQuery *)albumQuery

리턴값
MPMediaTypeMusic 타입의 미디어 아이템들과 매치하며 MPMediaGroupingAlbum의 그룹핑 타입을 가지는 미디어 쿼리.

토론
하나의 미디어 아이템은 하나이상의 미디어 타입을 가질 수 있다. 예를 들어, 하나의 아이템은 "music"과 "podcast"형태가 될 수 있다. 하나의 albumsQuery 쿼리는 그들이 또한 다른 미디어 타입이든 아니든 간에, 모든 MPMediaTypeMusic 아이템들과 매치한다.

iPhone OS 3.0 이상에서 사용가능하며 MPMediaQuery.h에 선언되어 있다.

artistsQuery
아티스트 이름으로 그룹화 되고 정렬된 뮤직 아이템들을 얻는 미디어 쿼리를 생성한다.
+ (MPMediaQuery *)artiestsQuery

리턴값
MPMediaGroupingArtiest 의 그룹핑 타입을 가지는 MPMediaTypeMusic 타입의 미디어 아이템을 얻는 미디어 쿼리.

토론
하나의 미디어 아이템은 하나이상의 미디어 타입을 가질 수 있다. 예를 들어, 하나의 아이템은 "music"과 "podcast"형태가 될 수 있다. 하나의 artistsQuery 쿼리는 그들이 또한 다른 미디어 타입이든 아니든 간에, 모든 MPMediaTypeMusic 아이템들과 매치한다.

iPhone OS 3.0 이상에서 사용가능하며 MPMediaQuery.h에 선언되어 있다.


audiobooksQuery
오디오 북 이름에 의해 오디오 북 아이템들을 얻고, 콜렉션들을 그룹 및 정렬하는 미디어 쿼리를 생성.
+ (MPMediaQuery *)audiobooksQuery

리턴값
MPMediaTypeAudioBook 형태의 미디어 아이템을 얻는 미디어 쿼리. 그리고 이것은 MPMediaGroupingTitle을 기본 그룹 형태로 사용한다.

토론
하나의 미디어 아이템은 하나이상의 미디어 타입을 가질 수 있다. 예를 들어, 하나의 아이템은 "music"과 "podcast"형태가 될 수 있다. 하나의 audiobooksQuery 쿼리는 이것이 또 다른 미디어 타입이든 아니든 간에 모든 MPMediaTypeAudioBook 아이템들과 매치한다.

iPhone OS 3.0 이상에서 사용가능하며 MPMediaQuery.h에 선언되어 있다.


compilationsQuery
앨범 이름으로 그룹 및 정렬한 컬렉션들과 컴필레이션 아이템들을 얻는 미디어 쿼리를 생성
+ (MPMediaQuery *)compilationsQuery

리턴값
MPMediaItemPropertyIsCompilation 속성을 가지는 미디어 아이템을 얻는 미디어 쿼리. 리턴되는 쿼리는 MPMediaGroupingAlbum의 그룹핑 형태를 가진다.

토론
하나의 미디어 아이템은 하나이상의 미디어 타입을 가질 수 있다. 예를 들어, 하나의 아이템이 "music"과 "podcast"타입이 될 수 있다. compilationsQuery 쿼리는 그들의 미디어 타입에 상관없이, MPMediaItemPropertyIscompilation 속성을 가지는 모든 미디어 아이템들을 검색한다.

iPhone OS 3.0 이상에서 사용가능하고 MPMediaQuery.h 에 선언되어 있다.


composersQuery
작곡가 이름에 의해 그룹 및 정렬되는 컬렉션들과 모든 미디어 아이템들을 검색하는 미디어 쿼리를 생성.
+ (MPMediaQuery *)composersQuery

리턴값
MPMediaGroupingComposer의 그룹핑 타입을 가지는 모든 미디어 아이템들을 검색하는 미디어 쿼리.

iPhone OS 3.0 이상에서 사용가능하며 MPMediaQuery.h 에 선언되어 있다.


genresQuery
장르명에 의해 그룹 및 정렬되는 컬렉션들의 모든 미디어 아이템들을 검색하는 미디어 쿼리를 생성
+ (MPMediaQuery *)genresQuery

리턴값
MPMediaGroupingGenre의 그룹핑 타입을 가지는 모든 미디어 아이템들을 검색하는 미디어 쿼리.

iPhone OS 3.0 이상에서 사용가능하며  MPMediaQuery.h에 선언되어 있다.


playlistsQuery
재생목록 이름에 의해 컬렉션을 그룹및 정렬하는 모든 iPod 라이브러리를 검색하는 미디어 쿼리를 생성
+ (MPMediaQuery *)playlistsQuery

리턴값
MPMediaGroupingPlaylist의 그룹핑 타입을 가지는 모든 미디어 아이템들을 검색하는 미디어 쿼리.

iPhone OS 3.0 이상에서 사용가능하며 MPMediaQuery.h에 선언되어 있다.


podcastsQuery
팟캐스트 이름으로 컬렉션을 그룹 및 정렬하는 팟캐스트 아이템들을 정렬하는 미디어 쿼리를 생성
+ (MPMediaQuery *)podcastsQuery

리턴값
MPMediaGroupingPodcastTitle의 그룹핑 타입을 가지는 MPMediaTypePodCast 타입의 미디어 아이템을 검색하는 미디어 쿼리.

토론
하나의 미디어 아이템은 하나이상의 미디어 타입을 가질 수 있다. 예를 들어, 하나의아이템은 "music"과 "podcast"형태가 될 수 있다. 하나의 podcastsQuery 쿼리는 이것이 다른 미디어 타입이던 아니던 간에 모든 MPMediaTypePodcast를 검색한다.

iPhone OS 3.0 이상에서 사용가능하며 MPMediaQuery.h에 선언되어 있다.


songsQuery
노래 제목에 의해 컬렉션들을 그룹 및 정력하는 뮤직 아이템들을 검색하는 미디어 쿼리를 생성
+ (MPMediaQuery *)songsQuery

리턴값
MPMediaGroupingTitle 의 그룹핑 타입을 가지는  MPMediaTypeMusic 형태의 미디어 아이템을 검색하는 미디어 쿼리

토론
하나의 미디어 아이템은 하나이상의 미디어 타입을 가질 수 있다. 예를 달어 하나의 아이템은 "music"과 "podcast" 형태가 될 수 있다.  songsQuery쿼리는 검색하고자 하는것들이 다른 미디어 타입이든 아니든 상관없이 모든 MPMediaTypeMusic 아이템들을 검색한다.

iPhone OS 3.0 이상에서 사용가능하며 MPMediaQuery.h 에 선언되어 있다.


인스턴스 메서드
addFilterPredicate:
쿼리에 미디어 프로퍼티 프리디케이트 추가
-(void)addFilterPredicate:(MPMediaPredicate *)predicate
인자
predicate
    쿼리의 프리디케이트 셋에 추가할 미디어 프리디케이트

iPhone OS 3.0 이상에서 사용가능하고 MPMediaQuery.h 에 선언되어 있다. 


init
일반적인 미디어 쿼리 초기화
-(id)init
토론
일반적인 미디어 쿼리는 필터 프리디케이트들과 그룹핑 구성이 없다.  이것은 iPod 라이브러리의 모든것을 검색하며 그룹핑이나 정렬은 제공하지 않는다.

iPhone OS 3.0 이상에서 사용가능하며  MPMediaQuery.h 에 선언되어 있다.


initWithFilterPredicates:
미디어 프로퍼티 프리디케이트들의 셋으로 미디어 쿼리 초기화
- (id)initWithFilterPredicates:(NSSet *)filterPredicates

인자
filterPredicates
    iPod 라이브러리에서 필터로 사용할 미디어 프로퍼티 프리디케이트들의 셋

리턴값
초기화된 미디어 쿼리

토론
MPMediaPropertyPredicate 클래스 레퍼런스는 미디어 프로퍼티 프리디케이트들을 생성하는 방법을 설명한다.  MPMediaItem 클래스 레퍼런스의 일반적인 미디어 아이템 프로퍼티 키들과 팟캐스트 아이템 프로퍼티 키들의 목록은 프리디케이트들을 구성하는데 사용할 수 있는 키들을 포함하고 있다.

iPhone OS 3.0 이상에서 사용가능하며 MPMediaQuery.h에 선언되어 있다.


removeFilterPredicate:
쿼리에서 필터 프리디케이트를 삭제한다.
- (void)removeFilterPredicate:(MPMediaPredicate *)predicate
인자
predicate
    쿼리의 프리디케이트 셋에서 지울 미디어 프리디케이트.

iPhone OS 3.0 이상에서 사용가능하며 MPMediaQuery.h에 선언되어 있다.

상수
키들을 그룹핑하는 미디어 아이템 컬렉션
하나의 미디어 쿼리를 구성하는 groupingType 속성으로 사용되는 키들.
다음의 상수들은 모두 iPhone OS 3.0 이상에서 사용가능하며, MPMediaQuery.h에 선언되어 있다.
enum {
    MPMediaGroupingTitle,
    MPMediaGroupingAlbum,
    MPMediaGroupingArtist,
    MPMediaGroupingAlbumArtist,
    MPMediaGroupingComposer,
    MPMediaGroupingGenre,
    MPMediaGroupingPlaylist,
    MPMediaGroupingPodcastTitle,
    MPMediaGroupingSeriesName
};
typedef NSInteger MPMediaGrouping;

상수
MPMediaGroupingTitle
    제목으로 미디어 아이템 컬렉션들을 그룹 및 정렬한다. 
    노래를 예를 들면  title 은 노래 제목이다. 
    이것은 키를 그룹화하는 기본값이다.
MPMediaGroupingAlbum
    앨범으로 미디어 아이템 컬렉션들을 그룹 및 정렬하고,
    앨범 안에서는 트랙 순서로 노래들을 정렬한다.
MPMediaGroupingArtist
    연주자(가수이름)로 미디어 아이템 컬렉션들을 그룹 및 정렬한다.
MPMediaGroupingAlbumArtiest
    앨범 전체에서 앨범의 대표 연주자로 미디어 아이템 컬렉션들을 그룹 및 정렬한다.
MPMediaGroupingComposer
    작곡가로 미디어 아이템 컬렉션들을 그룹 및 정렬한다.
MPMediaGroupingGenre
    음악이나 영화 장르를 통해서 미디어 아이템 컬렉션들을 그룹 및 정렬 한다.
MPMediaGroupingPlaylist
    재생목록으로 미디어 아이템 컬렉션들을 그룹 및 정렬한다.
MPMediaGroupingPodcastTitle
    팟캐스트 제목으로 미디어 아이템 컬렉션들을 그룹 및 정렬한다.
MPMediaGroupingSeriesName
    시리즈로 미디어 아이템 컬렉션들을 그룹 및 정렬한다.

토론
다음의 코드 스니펫은 키를 그룹핑하는 방법에 대해 보여준다:
MPMediaQuery *everything = [[MPMediaQuery alloc] init];
[everything setGroupingType:MPMediaGroupingAlbum];
NSArray *collections = [everything collections];

이 코드 라인들을 실행한 후에, collections 배열은 앨범 이름에 따라 그룹 및 정렬된 미디어 아이템들을 포함하고 있다.
정렬된 노래 목록을 얻으려면, MPMediaGroupingTitle 키로 미디어 쿼리를 구성하거나 미디어 쿼리를 위해 기본으로 되어 있는 타이틀 키의 이점을 활용한다.  이 두 가지 모두, 자신의 컬렉션을 효과적으로 얻는다.
컬렉션들은 데스크탑의 iTunes 에서 사용하는 것과 같은 방법으로 정렬한다.  이것은 사용자가 선택한 기본 시스템 언어를 포함한다.  기사를 읽을 때, 영어를 사용할 때는  "A," "An," 그리고 "The"가, 프랑스어를 사용할 때는 "L'," "La," "Le"가 정렬되는 동안은 무시된다.  만약에 정확한 정렬이 필요하다면 이것을 당신의 어플리케이션에 구현하라.


원문

댓글 없음:

댓글 쓰기

내 블로그 목록

관심 사용자