업데이트 : 더 나은 방법이 있을지 모르지만 나는 아래 답변을 보았습니다.대상 날짜가 포함 된 kMDItemAccessedDates (배열)와 NSMetadataQuery의 NSPredicate (s)가 일치합니까?
스포트라이트 가져 오기 도구는 항목에 액세스 한 날짜 배열 인 메타 데이터를 가져옵니다. 다음과 같습니다 : 나는 사용자가 입력 특정 날짜에 액세스 된 그러나 나는이 작업을 수행 할 수있는 권리 구문을 찾는 게 아니에요 이러한 파일을 쿼리하고 싶습니다
kMDItemAccessedDates = (
"2012-06-18 07:00:00 +0000",
"2013-01-10 08:00:00 +0000",
"2013-01-15 08:00:00 +0000"
)
. 궁금해 할 일이 있다면 ...
첫 번째 문제는 사용자가 요일과 시간이 아닌 하루를 나타내는 날짜를 입력한다는 것입니다. ADATE >= user_day_start && ADATE <= user_day_end
지금 메타 데이터의 날짜의 배열이 정말 그 날짜의 모든 떨어질 경우 일치시킬 수 있도록 : 난 그렇게 논리적으로, 그 날에 내리는 모든 날짜를 검색해야처럼
는 듯 user_date 일 내에 이 일 경우
좋을 :NSDate * date = [NSDate dateWithNaturalLanguageString: inWhenString];
NSDate * endDate = [NSDate dateWithTimeInterval: 86400 sinceDate: date];
predicate = [NSPredicate predicateWithFormat:
@"kMDItemAccessedDates between {%@, %@}", date, endDate];
하지만 예외가 발생합니다 :
Exception detected while handling key input.
2013-01-16 03:12:57.517 Chatty[96974:403] Unknown type of NSComparisonPredicate
given to NSMetadataQuery
(kMDItemAccessedDates BETWEEN {CAST(379540800.000000, "NSDate"),
CAST(379627200.000000, "NSDate")})
을하고 단 하나의 날짜가 아닌 배열에 대해 작동 할 수처럼 보인다. 다음과 같이 형식 문자열에 "ANY"를 추가하십시오 : "ANY kMDItemAccessedDates between {%@, %@}"
... 여전히 예외를 던지는 데 도움이되지 않았습니다.
이를 시도하고 예외를 throw하지,하지만 정말 하나 작동하지 않습니다 : 사람이 일을하는 방법에 어떤 아이디어가 있는지 궁금
NSPredicate *p1 = [NSPredicate predicateWithFormat: @"kMDItemAccessedDates >= %@", date ];
NSPredicate *p2 = [NSPredicate predicateWithFormat: @"kMDItemAccessedDates <= %@", endDate ];
predicate = [NSCompoundPredicate andPredicateWithSubpredicates: [NSArray arrayWithObjects: p1, p2, nil]];
을 ... 나 같은 (이 불가능 것을 알고 그 (것)들을 전부 얻고 그 후에 기억 또는 무언가에있는 여과기를해야하고, 진짜로 사실이 아니 것이라는 점을 희망하십시오 - 긴 명부 일 수 있었다!).
그것은 매우 흥미 롭습니다. 나는 전에 CAST를 보지 못했다. 네가 일하게되어 기쁘다. – regulus6633