Aşağıdaki neden bir BAD_ACCESS hatasıyla sonuçlanıyor?NSDictionary, değerler olarak farklı nesne türleri içerebilir mi?
NSDictionary'de başka bir NSDictionary değeri de dahil olmak üzere farklı nesne türleri olabilir mi?
Aşağıdaki neden bir BAD_ACCESS hatasıyla sonuçlanıyor?NSDictionary, değerler olarak farklı nesne türleri içerebilir mi?
NSDictionary'de başka bir NSDictionary değeri de dahil olmak üzere farklı nesne türleri olabilir mi?
Bir NSDictionary
içine nesnenin her türlü koyabilirsiniz. Yani @"fred"
tamam, 1
ise tamsayı bir nesne değildir. Bir sözlükte bir numara koymak istiyorsanız, bir NSNumber
sarın:
NSDictionary *header = { @"title": @"fred", @"count": @1 };
Sahip olduğunuz gibi değil. 1 sayısı bir ilkeldir ve NSArray nesnesi yalnızca nesneleri tutabilir. "1" için bir NSNumber oluşturun ve daha sonra saklayacaktır.
bir NSDictionary
sadece o amaç-Cı nesneler içerebilen (örneğin NSString
ve NSArray
gibi), bu int
, float
veya char*
gibi ilkel türde içeremez. Bu kısıtlamalar göz önüne alındığında, heterojen sözlükler tamamen yasaldır. Eğer bir anahtar veya değer olarak bir numara gibi 1
eklemek istiyorsanız
, bir NSNumber
ile sarın olmalıdır:
NSDictionary *header=[[NSDictionary alloc] initWithObjectsAndKeys:
@"fred", @"title",
[NSNumber numberWithInt:1], @"count",
nil];
tek gereksinim olduğu bir nesne olmasıdır. Nesnelerinizi kodunuzda düzgün bir şekilde kullanmanız size kalmış, ancak muhtemelen, türlerini tuşlara bağlı olarak takip edebilirsiniz.
1 bir nesne değil. Sözlüğe bir sayı koymak istiyorsanız, onu bir NSNumber'e dönüştürmek isteyebilirsiniz.
İlginç. Her şeyin bir nesne olduğu C# için kullanıyorum. Teşekkürler. – ChrisP