如何从核心数据中获取随机字符串?

时间:2012-01-22 22:57:17

标签: objective-c core-data nspredicate nsfetchrequest

我有一个获取请求,它使用NSPredicate从Core Data中捕获一组NSString记录。但是,输出似乎难以理解。我看不出我错过了什么。这是代码:

NSManagedObjectContext *context = [self managedObjectContext];
NSEntityDescription *entityQuote = [NSEntityDescription entityForName:@"Quotes" inManagedObjectContext:context];
NSFetchRequest *fetchRequestQuote = [[NSFetchRequest alloc] init];
[fetchRequestQuote setEntity:entityQuote];  

if ([sourceString isEqualToString:@"one"]) sourceString = @"  one";
if ([sourceString isEqualToString:@"two"]) sourceString = @"  two";
if ([sourceString isEqualToString:@"three"]) sourceString = @"  three";
if ([sourceString isEqualToString:@"four"]) sourceString = @"  four";
if ([sourceString isEqualToString:@"five"]) sourceString = @"  five";

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"quote contains %@", sourceString];
[fetchRequestQuote setPredicate:predicate];
NSArray *chosenSourceAll = [context executeFetchRequest:fetchRequestQuote error:nil];
int countSource = [chosenSourceAll count];
int rNumber = arc4random() % countSource;
NSLog(@"%d, %d, %@", rNumber, countSource, [chosenSourceAll objectAtIndex:rNumber]);

我在控制台中的输出是:

2, 38, <NSManagedObject: 0x8c65860> (entity: Quotes; id: 0x7fc4790 <x-coredata://9FC73918-E9DC-4CDB-9D32-E640C9E24C71/Quotes/p3> ; data: <fault>)

有关如何获取字符串内容以输出的任何想法?我是否不正确地格式化了我的获取请求?我确实检查了sqlite3文件,字符串很好。

1 个答案:

答案 0 :(得分:1)

看起来你的Quotes类根本不是NSString,而是NSManagedObject。您可能在Quotes对象上定义了一些属性,这是您实际存储引用主体的位置。这是您在打印到日志时要访问的属性,而不是对象本身。

如果这不对,请发布有关您的报价类的更多信息。