Получать объекты в NSMutableArray
предположим следующее:
@interface BOOK : NSObject
{
@private
NSString *title;
NSString *author;
NSString *ISBN;
}
...
BOOK *booklist = [[[BOOK alloc] init] autorelease];
NSMutableArray *myarray = [NSMutableArray array];
while (true)
{
booklist.title = @"title";
booklist.author = @"author";
booklist.ISBN = @"1234-1";
[myarray addObject:booklist];
}
Мой вопрос: как получить объект BOOK i.e booklist.title,.author,.ISBN с определенным индексом в myarray.
Ответы
Ответ 1
с этим кодом? Невозможно, потому что вы оставите тот же список книг в течение оставшегося времени (пока не будет больше памяти)
С кодом без бесконечных циклов вы будете использовать
NSInteger index = 0;
Book *aBook = [myArray objectAtIndex:index];
NSString *title = aBook.title;
Ответ 2
Это может вообще не помогать, но я помню, что у меня были проблемы с тем, чтобы не бросать, вытягивая объекты из массивов...
Book *aBook = (Book *)[myArray objectAtIndex: index];
Это может помочь, может и не... и я знаю, что этот пост старый, но, возможно, это поможет кому-то...
.scott
Ответ 3
Начиная с Xcode 4.5 (и Clang 3.3), вы можете использовать Objective-C Литералы:
Book *firstBookInArray = myArray[0];
Ответ 4
У вас есть это расширение, если вы хотите
Создайте файл extends.h добавьте этот код и #import "extends.h" в свой проект:
/*______________________________ Extends NSMutableArray ______________________________*/
/**
* Extend NSMutableArray
* By DaRkD0G
*/
@interface NSMutableArray (NSArrayAdd)
/**
* Get element at index
*
* @param index
*/
- (NSObject *) getAt:(int) index;
@end
/**
* Extend NSMutableArray Method
* By DaRkD0G
*/
@implementation NSMutableArray (NSArrayAdd)
/**
* Get element at index
*
* @param index
*/
- (NSObject *) getAt:(int) index {
NSInteger anIndex = index;
NSObject *object = [self objectAtIndex:anIndex];
if (object == [NSNull null]) {
return nil;
} else {
NSLog(@"OK found ");
return object;
}
}
@end
/*______________________________ Extends NSArray ______________________________*/
/**
* Extend NSArray
* By DaRkD0G
*/
@interface NSArray (NSArrayAdd)
/**
* Get element at index
*
* @param index
*/
- (NSObject *) getAt:(int) index;
@end
/**
* Extend NSArray Method
* By DaRkD0G
*/
@implementation NSArray (NSArrayAdd)
/**
* Get element at index
*
* @param index
*/
- (NSObject *) getAt:(int) index {
NSInteger anIndex = index;
NSObject *object = [self objectAtIndex:anIndex];
if (object == [NSNull null]) {
return nil;
} else {
NSLog(@"OK found ");
return object;
}
}
@end
ИСПОЛЬЗОВАНИЕ:
NSObject object = [self.arrayItem getAt:0];
NSObject object2 = [self.arrayItem getAt:50];