2014-12-08 3 views
0

이것은 How to use binary flags in Core Data?과 같지만 시도 할 때 "지원되지 않는 함수 표현식"이 나타납니다.iOS 코어 데이터 이진 연산에서 술어 표현

특정 ID가 있고 특정 바이너리 플래그가 설정되지 않은 코어 데이터 저장소에서 엔티티를 찾을 수있는 조건부를 만들고 싶습니다. 다음은 내 코드입니다.

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ownerID = %@ AND ((banned & 8) == 0)", THEUSERUSERID]; 
NSFetchRequest *fetchRequest = [PCDUser MR_requestAllWithPredicate:predicate]; 

_frController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:[[COMMDBMANAGER magicalRecordStack] context] sectionNameKeyPath:sectionKeyPath cacheName:nil]; 

[_frController setDelegate:self]; 
[_frController performFetch:&error]; 

위의 링크에서 이전 호를 보면 이것이 정상적으로 작동하는 것으로 보입니다. 내가 필터링 된 결과를 포함하도록 NSFetchedResultsController 설정 결과 (및 indexPaths 등)가 필요하기 때문에 그러나, 나는이

'NSInvalidArgumentException', reason: 'Unsupported function expression banned & 8' 

을 얻을, 나는 사후을 필터링 할 수있는 방법을 찾을 수 없어 그 결과를 설정 한 필터링을 포함하십시오.

어떻게 코어 데이터에서 이진 플래그를 사용합니까?

+0

나는'NSFetchRequest'에서 비슷한 술어를 가지고 작동했습니다. 'banned' 속성이 존재하고 비트 연산을 지원하는 타입을 가지고 있습니까 (예 :'Integer32')? –

+0

고맙습니다. 나는이 애플 리케이션을 지원하는 백엔드 mysql 데이터베이스에서 node.js 녀석을 돕고 있었다. (그리고이 CD 스토어가 DB에서 데이터를 가져온다.) 나는 내 머리 속에 속성에 대한 잘못된 이름을 가지고 있었다. CD 스키마에서 나는 bannedFlags를 가지고 있지만, mysql에서 금지되어있다. 왜 나는 모를만큼 이유를 묻지 않는다. 그리고 금지 된 길을 오랫동안 주말에 끝낸 후에 나는 오늘 아침에 뇌가 방구했다. 알림을 확인해 주셔서 감사합니다. 대답을하면 받아 들일 것입니다. – chadbag

답변

2

NSFetchRequest에 비슷한 술어가 있는데 효과가있었습니다. 모델에 banned 속성이 있고 비트 단위 연산을 지원하는 유형이 있는지 확인하십시오 (예 : Integer32).