Получать объекты в 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];