Преобразование NSobject в CGFPoint - PullRequest
1 голос
/ 31 января 2012

У меня есть случай, когда я читаю значения из файла CSV на сервере, а затем анализирую этот файл, удаляя запятые. Эти данные должны быть нанесены на график, и, следовательно, я должен преобразовать их в CGFloat есть какие-нибудь возможные пути? Ниже приведен код, с которым я работал.

-(void)connection :(NSURLConnection *) connection didReceiveData:(NSData *)data{

[self serverConnect];

response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

NSString *stripped1 = [response stringByReplacingOccurrencesOfString:@"\r" withString:@""];

NSMutableArray *rows = [NSMutableArray arrayWithArray:[stripped1 componentsSeparatedByString:@"\n"]];
NSMutableArray *contentArray = [NSMutableArray array];
NSArray *components;




for (int i=0;i<[rows count]; i++) {
    if(i == 0 || [[rows objectAtIndex:i] isEqualToString:@""]){
        continue;
    }
    components = [[rows objectAtIndex:i] componentsSeparatedByString:@","];


    id x = [components objectAtIndex:0] ;
    id y = [components objectAtIndex:1];


    [contentArray addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:x,@"x",y,@"y", nil]];
    NSLog(@"Contents of myData: %@",contentArray);



}

self.scatterPlot = [[TUTSimpleScatterPlot alloc] initWithHostingView:_graphHostingView andData:contentArray];
[self.scatterPlot initialisePlot:0];


 }

В массиве содержимого есть объекты, которые не являются CGFloat. Ошибка появляется здесь

   -(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
{
    if ( [plot.identifier isEqual:@"mainplot"] )
      {
       NSValue *value = [self.graphData objectAtIndex:index];
           **CGPoint point = [value CGPointValue];**

- [__NSCFDictionary CGPointValue]: нераспознанный селектор отправлен в экземпляр 0x6b77c50 '

1 Ответ

2 голосов
/ 31 января 2012

contentArray - это NSArray из NSDictionary объектов, а объектами словарной записи являются NSString, а не NSValue.

Предполагая, что rt и uc являются значениями x, y точки:

NSDictionary *entry = [self.graphData objectAtIndex:index];
CGFloat rt = [[entry objectForKey:@"RT"] floatValue];
CGFloat uc = [[entry objectForKey:@"UC"] floatValue];
CGPoint point = CGPointMake(rt, uc);
...