получить объекты в NSMutableArray - PullRequest
13 голосов
/ 08 марта 2011

предположим следующее:

@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, т.е. booklist.title, .author, .ISBN по определенному индексу в myarray.

Ответы [ 4 ]

29 голосов
/ 08 марта 2011

с этим кодом?Невозможно, потому что вы добавляете тот же самый bookList в остальное время (пока не останется больше памяти)

С кодом без бесконечных циклов вы будете использовать

NSInteger index = 0;
Book *aBook = [myArray objectAtIndex:index];
NSString *title = aBook.title;
2 голосов
/ 09 сентября 2013

Начиная с Xcode 4.5 (и Clang 3.3), вы можете использовать Objective-C Literal :

Book *firstBookInArray = myArray[0];
2 голосов
/ 01 февраля 2012

Это может не помочь вообще, но я помню, что у меня были проблемы, когда не приводили при вытаскивании объектов из массивов ...

Book *aBook = (Book *)[myArray objectAtIndex: index];

Это может помочь, а может и не ...стар, но, возможно, это кому-то поможет ..

.scott

0 голосов
/ 05 февраля 2015

У вас это расширяется, если вы хотите

Создать файл 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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...