Bagaimana saya bisa menambahkan objek CGPoint ke NSArray dengan cara mudah?

129

Saya memiliki sekitar 50 objek CGPoint yang menggambarkan sesuatu seperti "jalur", dan saya ingin menambahkannya ke NSArray. Ini akan menjadi metode yang hanya akan mengembalikan CGPoint yang sesuai untuk indeks yang diberikan. Saya tidak ingin membuat 50 variabel seperti p1 = ...; p2 = ..., dan seterusnya. Apakah ada cara mudah yang akan memungkinkan saya untuk mendefinisikan titik-titik "langsung" ketika menginisialisasi NSArray dengan objek?

Terima kasih
sumber

Jawaban:

324

Dengan UIKitApple menambahkan dukungan untuk CGPoint ke NSValue, sehingga Anda dapat melakukan:

NSArray *points = [NSArray arrayWithObjects:
                     [NSValue valueWithCGPoint:CGPointMake(5.5, 6.6)],
                     [NSValue valueWithCGPoint:CGPointMake(7.7, 8.8)],
                     nil];

Daftarlah sebanyak [NSValue] instance yang Anda miliki CGPoint, dan akhiri daftar di nihil. Semua objek dalam struktur ini dilepaskan secara otomatis.

Di sisi lain, saat Anda menarik nilai dari array:

NSValue *val = [points objectAtIndex:0];
CGPoint p = [val CGPointValue];
Jarret Hardie
sumber
3
Untuk jenis skalar, lihat NSNumber ... Anda akan melihat konstruktor seperti numberWithBool: numberWithInteger: numberWithFloat :, numberWithUnsignedShort :, etc.
Jarret Hardie
4
Atau Anda dapat menggunakan NSValue secara langsung: [NSValue valueWithBytes: & someStructSockaddr objCType: @encode (struct sockaddr)] misalnya.
Jim Dovey
7

Saya menggunakan ini:

Buat array:

NSArray *myArray = @[[NSValue valueWithCGPoint:CGPointMake(30.0, 150.0)],[NSValue valueWithCGPoint:CGPointMake(41.67, 145.19)]];

Dapatkan objek CGPoint pertama:

CGPoint myPoint = [myArray[0] CGPointValue];
Tibidabo
sumber
3

Anda juga dapat menulis ini dalam bentuk minimal:

CGPoint myArray[] = { CGPointMake(5.5, 6.6), CGPointMake(7.7, 8.8) };

CGPoint p2 = myArray[1];
GilesDMiddleton
sumber
2

Apakah Anda sudah melihatnya CFMutableArray? Itu mungkin bekerja lebih baik untuk Anda.

Ramin
sumber