これは文字どおり私をナットにしています。iOSコアデータ述語を使用して文字列テキストを適切に比較する方法は?
私はユニークな属性としてNSStringsを使用する2つのエンティティを持っています。
NSStringを比較する述部を作成する正しい方法は何ですか?
現在、私は持っています: [NSPredicate predicateWithFormat:@ "unique =%@"、uniqueValue];
これは実際の文字列値ではなくポインタアドレスを比較しているような気がしますが、確認できません。私は正確な文字列の一致のためにはいを返す必要があります。
-(BOOL)uniqueEntityExistsWithEnityName:(NSString*)entityName UniqueKey:(NSString*) uniqueKey UniqueValue:(NSString*)uniqueValue SortAttribute:(NSString*)sortDescriptorAttribute ManagedObjectContext:(NSManagedObjectContext*) context;
{
BOOL returnValue = NO;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entityName];
//what is the correct predates to compare the text an string core data property against a passed in string?
request.predicate = [NSPredicate predicateWithFormat:@"unique= %@", uniqueValue];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:sortDescriptorAttribute ascending:YES];
request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSError *error = nil;
NSArray *matches = [context executeFetchRequest:request error:&error];
if (!matches)
{
NSLog(@"Error: no object matches");
}
else if([matches count] > 1) {
NSLog(@"Error: More than one object for unique record");
returnValue = YES;
} else if ([matches count] == 0) {
returnValue = NO;
} else {
returnValue = YES;
}
return returnValue;
}
あなたには気分や実際の問題がありますか?あなたのコードは大丈夫です。データはsqliteデータベースからフェッチされますが、ポインタアドレスとどのように一致する必要がありますか? –