我有一个核心数据模型,其实体名为Goodie with Attribute,名为thingsYouWant,类型为String。
当我按下按钮时,我想从“thingsYouWant”中选择一个随机单词,并将其放入格式化的字符串中。
但我一直得到一个NSString可能无法响应objectAtIndex错误; - (
更新:
这是我的工作代码:
-( void ) viewDidLoad {
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription
entityForName:@"Goodie" inManagedObjectContext:
self.managedObjectContext ]];
NSError *error = nil;
NSArray *array = [self.managedObjectContext
executeFetchRequest:request error:&error];
if (array == nil)
{
// Deal with error...
}
if(array.count > 0){
int r = random()% [array count];
goodie = [array objectAtIndex:r];
} else { // no one to fetch - generate one
goodie = [NSEntityDescription
insertNewObjectForEntityForName:@"Goodie"
inManagedObjectContext:self.managedObjectContext ];
}
- (void) winText {
NSArray *components = [[goodie thingsYouWant]
componentsSeparatedByString:@" "];
NSInteger randomIndex = (random() % [components count]);
NSString *newWord = [components objectAtIndex:randomIndex];
winLabel.text =[NSString stringWithFormat: @"Congratulations,
the carrot you have earned is -->>> %@", newWord];
}
谢谢:-D
Skov
答案 0 :(得分:2)
首先,array.count
是点语法的不当使用。 count
不是NSArray
的属性,而是方法调用。
其次,哪一行给你错误?你是在[array objectAtIndex:0]
还是[goodie.thingsYouWant objectAtIndex:R]
得到的?如果是后者,则需要查看属性thingsYouWant
的定义。我怀疑它是一个字符串属性。
如果你想从字符串中取出一个单词,那么你需要将字符串拆分成一个数组。使用方法-componentsSeparatedByString:
。然后你可以随便抓住其中一个。
这方面的一个例子是:
NSArray *components = [[goodie thingsYouWant] componentsSeparatedByString:@" "];
NSInteger randomIndex = (random() % [components count]);
NSString *newWord = [components objectAtIndex:randomIndex];
答案 1 :(得分:0)
参考你的这句话
带有属性的Goodie叫 thingYouWant类型为String
我和Marcus S. Zarra在一起
请查看Non-Standard Persistent Attributes将您的数组存储在核心数据中。