[英]iPhone Obj-C - Retrieve custom object from NSMutableArray
有:
@interface MyClass : NSObject {
NSString *name; // retained and synthesized
NSString *address; // retained and synthesized
}
我正在創建一個數組:
NSMutableArray *myArray; // retained and synthesized
用幾個MyClass對象填充它:
MyClass *kat = [MyClass new];
kat.name = @"somestring";
kat.address = @"someotherstring"
[myArray addObject:kat];
[kat release];
如何在某個索引處獲取對象? 下面的代碼一直給我null,但它應該說明我需要的東西..
MyClass *obj = (MyClass*)[myArray objectAtIndex:5];
NSLog(@"Selected: %@", obj.address); // = null :(
鑄造有什么問題,或者我忘了什么?
MyClass *obj = (MyClass*)[myArray objectAtIndex:5];
NSLog(@"Selected: %@", obj.address); // = null :(
如果該代碼是打印(null)
,則不能是因為該數組為空或objectAtIndex:
失敗。 objectAtIndex:
如果您嘗試訪問超出數組中對象計數的索引並且數組不能包含“holes”或nil引用,則會拋出范圍異常。
代碼在沒有發生事故的情況下運行的唯一方法是:
myArray
是零; 您沒有為myArray
分配和/或分配數組實例。
obj.address
返回nil; 你沒有正確初始化實例(它看起來你做了)。
僅僅在@ property / @ synthesize對中聲明myArray是不夠的。 你需要myArray也是非零的。 你需要添加myArray = [[NSMutableArray alloc] init];
在[addObject:]
調用之上的某處。
此外,由於您已將“myArray”變量聲明為retain,如果您通過self.myArray = otherArray
將另一個(非零)數組設置為myArray, self.myArray = otherArray
myArray將為非零並保留並准備接受對象。
另外,如果你分配myArray,不要忘記在你的類的dealloc方法中釋放它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.