이것은 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'
을 얻을, 나는 사후을 필터링 할 수있는 방법을 찾을 수 없어 그 결과를 설정 한 필터링을 포함하십시오.
어떻게 코어 데이터에서 이진 플래그를 사용합니까?
나는'NSFetchRequest'에서 비슷한 술어를 가지고 작동했습니다. 'banned' 속성이 존재하고 비트 연산을 지원하는 타입을 가지고 있습니까 (예 :'Integer32')? –
고맙습니다. 나는이 애플 리케이션을 지원하는 백엔드 mysql 데이터베이스에서 node.js 녀석을 돕고 있었다. (그리고이 CD 스토어가 DB에서 데이터를 가져온다.) 나는 내 머리 속에 속성에 대한 잘못된 이름을 가지고 있었다. CD 스키마에서 나는 bannedFlags를 가지고 있지만, mysql에서 금지되어있다. 왜 나는 모를만큼 이유를 묻지 않는다. 그리고 금지 된 길을 오랫동안 주말에 끝낸 후에 나는 오늘 아침에 뇌가 방구했다. 알림을 확인해 주셔서 감사합니다. 대답을하면 받아 들일 것입니다. – chadbag