我有一个班级
@interface AppRecord : NSObject
@property (nonatomic, retain) NSString * urlSingle;
@property (nonatomic, retain) NSArray * image_url;
@end
它包含在另一个类
中@class AppRecord;
@interface IconDownloader : NSObject
@property (nonatomic, strong) AppRecord *appRecord;
@end
这是我的根视图控制器
#import "IconDownloader.h"
@implementation RootViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.imageDownloadsInProgress = [NSMutableDictionary dictionary];
}
- (void)startIconDownload:(AppRecord *)appRecord forIndexPath:(NSIndexPath *)indexPath
{
IconDownloader *iconDownloader = [self.imageDownloadsInProgress objectForKey:indexPath];
if (iconDownloader == nil)
{
iconDownloader = [[IconDownloader alloc] init];
int imgArrCount=[appRecord.image_url count];
NSLog(@"Image array is********************** %@",appRecord.image_url);
for(int i=0;i<imgArrCount;i++)
{
iconDownloader.appRecord.urlSingle=[appRecord.image_url objectAtIndex:i];
NSLog(@"iconDownloader.appRecord.urlSingle---------------------%@",iconDownloader.appRecord.urlSingle);
}
}
}
@end
我可以在这里指定iconDownloader.appRecord.urlSingle,我有空值。请帮忙。
答案 0 :(得分:0)
这与前方声明无关。当您转发声明一个类时,在使用任何类属性/方法之前,您应该#import
.h
文件。
问题是appRecord
中的属性iconDownloader
尚未创建,因此为nil
。在您的代码中,您应该这样做。
- (void)startIconDownload:(AppRecord *)appRecord forIndexPath:(NSIndexPath *)indexPath
//...
for(int i=0;i<imgArrCount;i++)
{
// First assign to the property so that it is not nil
iconDownloader.appRecord = appRecord;
// If required then make this assignment
iconDownloader.appRecord.urlSingle=[appRecord.image_url objectAtIndex:i];
}
//...
}
或者,您也可以覆盖init
类中的IconDownloader
并在其中创建appRecord
属性,以便在分配值时不是nil
。
希望有所帮助!
答案 1 :(得分:0)
您没有初始化 appRecord 对象。这就是为什么你得到空值。只需在 init 方法中初始化 appRecord ,例如:
-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
appRecord = [[AppRecord alloc]init];
}
return self;
}
同样,您必须在init定义中初始化 urlSingle 变量:
-(id)init
{
self = [super init];
if (self) {
urlSingle = URL_STRING_HERE;
}
return self;
}
现在你试试