Вот моя Realm модель:RLMObject с Запросы NSPredicate не возвращает результат
Pet.h
#import <Realm/Realm.h>
@interface Pet : RLMObject
@property NSString *species;
@end
Pet.m
#import "Pet.h"
@implementation Pet
+ (NSString *)primaryKey {
return @"species";
}
@end
Написать в Realm
- (void)writeCat {
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
Pet *pet = [[Pet alloc] init];
pet.species = @"cat";//as Primary Key
[Pet createOrUpdateInRealm:realm withValue:pet];
[realm commitWriteTransaction];
for (Pet *pet in [Pet allObjects]) {
NSLog(@"pet in realm: %@", pet);
//prints out:
//pet in realm: Pet {species = cat;}
}
}
запросов от Realm (после того, как данные получает письменное)
- (void)queryCat {
NSPredicate *predicate = [NSPredicate
predicateWithFormat: @"species == %@", @"cat"];
RLMResults *cat = [Pet objectsWithPredicate:predicate];
RLMResults *all = [Pet allObjects];
NSLog(@"cat: %@ and all: %@", cat, all);
//prints out:
//cat: RLMResults <0x7fdeed8e8710> ()
//and all: RLMResults <0x7ffa151c6630> ()
}
EDIT
Как я назвал методы:
-(void)viewDidLoad{
[self writeCat];
[self queryCat];
}
я пишу что-то в Realm но запрос nothi ng из него,
Что я сделал неправильно в вопросе?
Кажется, что нет никаких проблем в коде. И я уверен, что ваш код успешно выполнен в моей среде. Не могли бы вы показать код, вызывающий методы 'writeCat' и' queryCat'? –
@kishikawakatsumi Просто позвонил [self writeCat], а затем [self queryCat], ничего не делая. Странно, что '[Pet allObjects]' будет успешным сразу после '[realm commitWriteTransaction]', но сбой в любой другой момент. В то время как запрос кошки никогда не бывает успешным в любое время. – bluenowhere
Код, который вы предоставили, также не воспроизводит проблему. Я поставил проект, который я тестировал, в Интернете по адресу https://github.com/bdash/realm-test-so-32345896, чтобы вы могли сравнить свой локальный код с тем, с чем я тестировал. Я подозреваю, что есть детали, которые вы опускаете, что имеет отношение к поведению, которое вы видите. – bdash