2014-01-18 5 views
-2

Возможно ли создать массив CGPoint в объекте-C, я пишу этот код, но это приводит к ошибке!От NSMultableArray до CGPoint

NSMultableArray *result=[[NSMultableArray alloc]initWithCapacity:10]; 
CGPoint temp=[Self GetPoint]; 
result[0]=temp; //Error !! 

ответ

1

Да, вам нужно вставить CGPoint с в пределах NSValue объектов, примерно таких:

NSMutableArray *arr = [[NSMutableArray alloc] init]; 
NSValue *val1 = [NSValue valueWithCGPoint:cgpoint1]; 
[arr addObject:val1]; 
// etc. 

для извлечения CGPoint с, используйте:

for (NSValue *value in arr) { 
    CGPoint cgpoint = value.pointValue; 
    // Use point 
} 

Вот link к NSValue UIKit Дополнения Class Reference.

1

Нет, вы не можете хранить CGPoint в массиве. В массиве хранятся объекты типов указателей. Вы должны завернутые CGPoint в NSValue затем сохранить его в массиве ..

NSMultableArray *result=[[NSMultableArray alloc]initWithCapacity:10]; 
NSValue *pointvalue = [NSValue valueWithCGPoint:CGPointMake(x, y)]; 
[result addObject:pointvalue]; 

На время извлечения

CGPoint *myPoint = [[result objectAtIndex:indexValue] CGPointValue]; 

Также вы можете обернуть другой тип структуры слишком https://developer.apple.com/library/ios/documentation/uikit/reference/NSValue_UIKit_Additions/Reference/Reference.html

1

Вы можете сделать это [result addObject:[NSValue valueWithCGPoint:player.center]];

и расшифровывать, как показано ниже

CGPoint point = [(NSValue *)[result objectAtIndex:0] CGPointValue]; 
1

CGPoint является типом структуры, и вы можете хранить только Objective-C объекты в изменяемый массив. Лучший способ сделать это, чтобы обернуть его с этим NSValue нравится так [NSValue valueWithCGPoint:temp]

Аналогичный вопрос здесь: For iPad/iPhone apps, how to have an array of points?

Смежные вопросы