2014-11-13 2 views
-4

Я пытаюсь получить информацию о массиве в консоли, но NSLOg ничего не показывает. Это класс, в котором хранятся данные для приложения. Вот код.NSLOG не работает

#import <Foundation/Foundation.h> 
#import "DAObject.h" 

@interface DataModel : NSObject 

@property (strong, nonatomic) NSArray *array; 
@property (strong, nonatomic) NSArray *array2; 

@end 

и в .m файл

#import "DataModel.h" 
@implementation DataModel 

- (id)initWithCoder:(NSCoder *)decoder { 
    if (self = [super init]) {    
    } 
    return self; 
} 

- (NSArray *) _array 
{ 
    DAObject *obj1 = [[DACityObject alloc] init]; 
    obj1.name = @"Obj1"; 

    DACityObject *obj2 = [[DACityObject alloc] init]; 
    obj2.name = @"Obj2"; 

    _array = @[ obj1, obj2]; 

    for (int i = 0; i < [_array count]; i++) 
    { 
     NSLog(@"Item %d = %@", i, [_array objectAtIndex:i]); 
    } 

    return _array; 
} 

- (NSArray *) array2 {  
    _array2 = [[NSArray alloc] initWithObjects:@"icon1.png", @"icon2.png",@"icon3.png", nil]; 

    for (int i = 0; i < [_array2 count]; i++) { 
     NSLog(@"Item %d = %@", i, [_array2 objectAtIndex:i]); 
    } 
    return _array2; 
} 

@end 

Где проблема? Я не могу понять.

+0

Где '_array' метод называется? Почему он называется '_array'? Вы пытаетесь переопределить метод getter по умолчанию для свойства 'array'? – trojanfoe

+0

У вас есть два оператора NSLog. Оба они находятся внутри методов, которые никогда не называются. Вы вызываете метод _array или _array2 где угодно? Кроме того, методы должны начинаться с буквы, а не подчеркивания. – Fogmeister

+0

Я никогда не называл эти методы. Я просто хочу проверить, неправильно ли содержимое массивов. Как это сделать? – Newbie

ответ

0

Вам необходимо получить доступ из любого места в эти геттеры, после чего вы увидите журналы. Например попытаться сделать это в вашем AppDelegate.m

#import "DataModel.h" 

@implementation AppDelegate 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    DataModel *data = [DataModel new]; 
    data.array; 
    data.array2; 
} 
+0

Ещё один вопрос. В делегате приложения у меня есть предупреждение «Не удалось использовать результаты доступа к ресурсам - геттеры не должны использоваться для побочных эффектов», в чем проблема? – Newbie

+0

да, это нормально. это потому, что мы не используем возвращаемое значение, вы можете порт для цикла в appdelegate, где вы регистрируете содержимое массива – l0gg3r

+0

Спасибо большое, я ценю это! – Newbie

Смежные вопросы