Objective-C'de iki boyutlu bir dizi dize türünü nasıl bildiririm?Objective-C'de iki boyutlu dizgi dizisi nasıl bildirilir?
cevap
Öncelikle, iç dizinin dizeleri tutacak bir sınıf kullanarak veya (o dizelerden oluşan bir 2d dizi yapmak kolaydır olduğu) bir plist dosyadan yükleyerek düşünebilirsiniz.
doğrudan bildirimleri için, birkaç seçenek var. Eğer bir NSArray kullanmak isterseniz, el böyle yapısını oluşturmak gerekecek:NSArray *strings = @[ @[ @"A", @"B", @"C" ], @[ @"D", @"E", @"F" ], @[ @"G", @"H", @"I" ] ]
: dizi değişmezleri kullanılarak,
NSMutableArray *strings = [NSMutableArray array];
for(int i = 0; i < DESIRED_MAJOR_SIZE; i++)
{
[strings addObject: [NSMutableArray arrayWithObject:@"" count:DESIRED_MINOR_SIZE]];
}
Veya, böyle bir değişmez sürümünü alabilirsiniz
daha sonra bu gibi kullanabilirsiniz:
NSString *s = [[strings objectAtIndex:i] objectAtIndex:j];
Bu başlatmak için biraz garip, ama sen NSArray yöntemlerini kullanmak istiyorsanız gitmek için bir yoldur.
NSString *strings[MAJOR_SIZE][MINOR_SIZE] = {0}; // all start as nil
Sonra kullanmak böyle:
Alternatif C diziler kullanmaktır
NSString *s = strings[i][j];
Bu, daha az garip ama/ kopyalamak korumak için dikkatli olmak zorunda ve , değerlerini, bunları dizinin içine koyduktan ve dizinden kaldırdıkça serbest bırakır.
[strings[i][j] release];
strings[i][j] = [newString retain];
diğer fark size şudur: (! Tabii, ARC kullandığınız sürece) NSArray sizin için ancak C tarzı diziler bu yapardın, bir dizi yerine böyle bir şey yapmak gerekir N-C dizisine dizilemez, ancak NSArrays'i kullanamazsınız - bunun için NSNull kullanmanız gerekir. Ayrıca yığın taşması soruya NSString bellek yönetimi hakkında daha fazla bilgi için Cocoa: Memory management with NSString bakabilirsiniz. Eğer beyan ve dizeleri iki boyutlu diziyi başlatmak istiyorsanız
+1. – Abizern
, bunu yapabilirsiniz:
NSArray *myArray = [NSArray arrayWithObjects:
[NSArray arrayWithObjects:@"item 1-1", @"item 1-2", nil],
[NSArray arrayWithObjects:@"item 2-1", @"item 2-2", nil],
[NSArray arrayWithObjects:@"item 3-1", @"item 3-2", nil],
[NSArray arrayWithObjects:@"item 4-1", @"item 4-2", nil],
nil];
Bu size bir değişmez dizi vererek yararı vardır.
Merhaba Steve McLeod, myArray'ım böyle olsaydı nasıl "item 1-1" değerini alabilirim. –
[[myArray objectAtIndex: 1] objectAtIndex: 1] – Hackmodford
Ben kendini reklam olabilir ama ben 2D dizi olarak NSMutableArray
fore kolay kullanım sarmalayan yazdı. GitHub'da CRL2DArray
olarak kullanılabilir. Eğer NS (Değişken) Array konuşuyorsak
Android'den geliyor (Java) Çok kullanışlı bir GitHub efendim için çok teşekkür ederim. –
Tek sorun şu ki, normal bir NSArray'ın saymak gibi daha yerleşik metotları olmasını isterdim. Ama şimdilik sadece manuel olarak yapacağım! –
- 1. C de değişken boyutlu bir 2D dizisi nasıl bildirilir?
- 2. Kotlin'de iki boyutlu Int dizisi
- 3. Sıralı iki boyutlu numpy dizisi
- 4. Çok Boyutlu Denetimler Dizisi
- 5. C Çok boyutlu dizide iki karakter dizisi karşılaştırılıyor
- 6. Çok Boyutlu İlişkilendirme Dizisi (PHP)
- 7. Jinja2: Çok boyutlu javascript dizisi nasıl oluşturulur?
- 8. 2 Boyutlu C# Listesi dizisi?
- 9. Swift dizisinde JSONString'e dizgi dizisi dizisi Coğrafi kapsam
- 10. OpenCL'de yerel bellek nasıl bildirilir?
- 11. İki Boyutlu Diziye Referans
- 12. iki boyutlu dizi | java
- 13. C++ bildirimde bulunmadan çok boyutlu işaretçi dizisi
- 14. C içinde bir dizi yapı dizisi nasıl ayrılır ve bildirilir?
- 15. Üç durumlu iki boyutlu dizi nasıl oluşur?
- 16. Hızlı iki boyutlu desen eşlemesi
- 17. İki boyutlu liste nesnelerini karşılaştırarak
- 18. Clojure'da ilkel iki boyutlu (2d) bir dizi ikilik nasıl oluşturabilirim?
- 19. İki dizenin içine bir alt dizgi alın
- 20. İki boyutlu dizi dilimi C#
- 21. C: İki boyutlu dizinin boyutu
- 22. iki boyutlu std :: Yani vektör
- 23. iki boyutlu vektör numarayı takamıyorum
- 24. İki Boyutlu Dizi kullanarak şablonlar
- 25. dizgi incelemesi
- 26. android manifest dosyasında faaliyetleriyle iki paket nasıl bildirilir?
- 27. İki boyutlu bir HTML form girişleri
- 28. Yinelenen tupllerden çok boyutlu bir numpy dizisi nasıl oluşturulur?
- 29. C# cinsinden sabit boyutlu bayt dizisi kullanıcı türünü nasıl yapabilirim?
- 30. Çok boyutlu diziler dizisi python'da birden çok diziye nasıl bölünür?
https://github.com/tGilani/CRL2DArray, bunu "beyan" yoktur. Bir NSArray öğesi atanmış içerik türü içermediğinden, yalnızca dış diziyi bildirirsiniz. Nasıl kullanırsın, sana kalmış. Beni çok fazla yazarak kaydetmek için –