У меня есть эта функция, которая должна получать от CoreData с Predicate:NSPredicate сравнения номера вопрос
- (NSArray*)fetchingManagedObjectsWithEntityName:(NSString*)entityName predicate:(NSString*)predicateFormat
{
NSManagedObjectContext *moc = [[MainDb sharedDb] managedObjectContext];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:entityName inManagedObjectContext:moc];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateFormat];
[request setPredicate:predicate];
NSError *error;
NSArray *array = [moc executeFetchRequest:request error:&error];
if (array.count == 0)
{
return @[];
}
return array;
}
Но по какой-то причине он не работает нормально, это то, как я это называю:
NSArray *objects = [[DownloadData sharedData] fetchingManagedObjectsWithEntityName:@"DbSomething" predicate:[NSString stringWithFormat:@"somethingId == %d", someId.intValue]];
I «ве попробовал эти предикаты, а также:
[NSString stringWithFormat:@"somethingId == '%d'", someId.intValue]
[NSString stringWithFormat:@"somethingId == %ld", someId.integerValue]
[NSString stringWithFormat:@"somethingId == '%ld'", someId.integerValue]
[NSString stringWithFormat:@"somethingId == %@", someId]
[NSString stringWithFormat:@"somethingId == '%@'", someId]
„somethingId“, который находится в объекте CoreData DbSomething является NSNumber.
Я всегда получаю список всех объектов в «DbSomething», который выглядит так, последний всегда с данными, все остальные «вина»:
<_PFArray 0x1700368c0>(
<DbSomething: 0x1702db890> (entity: DbSomething; id: 0xd0000000005c0012 <x-coredata://FD3BA7EB-B2D7-4133-B209-A94C58949C2F/DbHomeDish/p23> ; data: <fault>),
<DbSomething: 0x1702db9e0> (entity: DbSomething; id: 0xd000000000c00012 <x-coredata://FD3BA7EB-B2D7-4133-B209-A94C58949C2F/DbHomeDish/p48> ; data: <fault>),
<DbSomething: 0x1702db900> (entity: DbSomething; id: 0xd000000001280012 <x-coredata://FD3BA7EB-B2D7-4133-B209-A94C58949C2F/DbHomeDish/p74> ; data: <fault>),
<DbSomething: 0x1702db970> (entity: DbSomething; id: 0xd0000000019c0012 <x-coredata://FD3BA7EB-B2D7-4133-B209-A94C58949C2F/DbHomeDish/p103> ; data: <fault>),
<DbSomething: 0x1702db740> (entity: DbSomething; id: 0xd000000002340012 <x-coredata://FD3BA7EB-B2D7-4133-B209-A94C58949C2F/DbHomeDish/p141> ; data: <fault>),
<DbSomething: 0x1702d9830> (entity: DbSomething; id: 0xd000000002980012 <x-coredata://FD3BA7EB-B2D7-4133-B209-A94C58949C2F/DbHomeDish/p166> ; data: <fault>),
<DbSomething: 0x1702db820> (entity: DbSomething; id: 0xd000000003240012 <x-coredata://FD3BA7EB-B2D7-4133-B209-A94C58949C2F/DbHomeDish/p201> ; data: <fault>),
<DbSomething: 0x1702db7b0> (entity: DbSomething; id: 0xd000000003680012 <x-coredata://FD3BA7EB-B2D7-4133-B209-A94C58949C2F/DbHomeDish/p218> ; data: <fault>),
<DbSomething: 0x1702d7d80> (entity: DbSomething; id: 0xd000000003e00012 <x-coredata://FD3BA7EB-B2D7-4133-B209-A94C58949C2F/DbHomeDish/p248> ; data: <fault>),
<DbSomething: 0x1702d82c0> (entity: DbSomething; id: 0xd000000004740012 <x-coredata://FD3BA7EB-B2D7-4133-B209-A94C58949C2F/DbHomeDish/p285> ; data: <fault>),
<DbSomething: 0x1742cf490> (entity: DbSomething; id: 0xd000000004e40012 <x-coredata://FD3BA7EB-B2D7-4133-B209-A94C58949C2F/DbHomeDish/p313> ; data: {
somethingId = 168;
})
)
Заранее спасибо!
попытайтесь передать не строку для предиката, а предикатный объект в качестве параметра. В некоторых случаях в моем коде возникли некоторые проблемы. и 'x ==% d' с' .integerValue' всегда работал для меня лучшим – geo
@geo Он также не работает [[NSString stringWithFormat: @ "somethingId ==% d", someId.integerValue] ' –
' - (NSArray *) fetchingManagedObjectsWithEntityName: (NSString *) entityName предикат: (NSPredicate *) p_predicate' -> 'if (pPredicate) [request setPredicate: p_predicate];' просто подсказка, чтобы избежать некоторых ошибок, возможно, не решение этой проблемы. Вот почему это всего лишь комментарий;) и можете ли вы перебирать все сущности и печатать свой (переопределенный) метод stringValue? Действительно ли они все пробелы? – geo