2010-06-28 2 views
0

문자열 데이터 형식의 coredata 모델에 amount 속성이 있습니다. 금액을 비교하여 기록을 찾아야합니다. 나는 다음과 NSPredicate 시도했지만 아무것도오고 결과는 항상 비어 있습니다.NSPredicate를 사용하여 CoreData의 레코드를 필터링하는 방법

NSDecimal result; 
NSScanner *theScanner = [[NSScanner alloc] initWithString:@"10.00"]; 
[theScanner scanDecimal:&result]; 
[theScanner release]; 



[request setPredicate:[NSPredicate predicateWithFormat:@"amount > %@",[NSDecimalNumber decimalNumberWithDecimal:result]]]; 
NSError* error = nil; 
NSArray* records = [managedObjectContext executeFetchRequest:request error:&error]; 
NSLog(@"%@",records); 

나는 coredata의 문자열 데이터 형식에 금액 값을 저장한다는 것을 기억하십시오. 다음은 내가 데이터에 몰두하는 몇 가지 예입니다. 내가 문자열 유형에 소수점 값을 저장 알고

Examples: -12.00, +30.00 etc. 

좋지 않아,하지만 난 coredata 속성 내에서 음성 또는 양성 마크 양을 저장할 수있는 좋은 방법을 찾지 못했습니다. 그 일을 할 수있는 좋은 방법이 있다면 저를 보내주십시오.

답변

2

금액에 대해 Decimal 데이터 형식을 사용하십시오 (Objective-C의 NSDecimalNumber 클래스에 해당).

+0

감사합니다.하지만 지금은 문제가 있습니다. 다음과 같이 금액 값을 비교할 수 없습니다. amount of <0 of model – AmitSri

+2

나는 ([amount doubleValue] <= 0) 다음을 시도해 보았다. NSDecimalNumber가 구조체라는 것을 알았고 이전처럼 직접 작성할 수는 없습니다. 감사합니다. – AmitSri

+0

NSDecimalNumber는 NSNumber의 하위 클래스입니다. – diederikh

관련 문제