随机词来自核心数据(NSString)

时间:2011-02-13 22:41:53

标签: cocoa-touch core-data

我有一个核心数据模型,其实体名为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

2 个答案:

答案 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将您的数组存储在核心数据中。