将UILabel设置为Null值导致异常

时间:2013-09-27 13:09:41

标签: ios objective-c

我正在尝试设置我的UILabel文本属性并获取异常NSInvalidArgumentException原因:' - [NSNull length]:无法识别的选择器发送到实例0x2591068

在做了一些调试后,我可以看到我试图设置的值,但我不明白为什么这是一个问题。它似乎与我的数据库结果与对象中返回NULL的方式有关。这是背景。

////////

ContactsModel - 这是我的对象,其中包含来自数据库的NSArray的结果。

#import "ContactModel.h"

@implementation ContactModel


@synthesize contactId;
@synthesize status;
@synthesize phone1;
@synthesize thumb_url;
@synthesize fullname;
@synthesize phone2;

- (id)init {
self = [super init];
if (self) {
    self.thumb_url = nil;
    self.status = nil;
    self.fullname = nil;
    self.phone1 = nil;
    self.phone2 = nil;
}
return self;
}

///////查看控制器

列表视图。 - 列表视图通过下面的segue将填充的对象传递给详细信息视图。

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"pushContactDetail"])
{
    GlobalVars * sharedGlobalVars = [GlobalVars sharedGlobalVars];
    NSArray *indexPaths = [self.imageCollection indexPathsForSelectedItems];
    ContactDetail *detailView = (ContactDetail *) segue.destinationViewController;
    NSIndexPath *index = [indexPaths objectAtIndex:0];
    NSLog(@"%d", index.section * 2 + index.row);
    //TODO:  Figure out what the hell this means
    ContactModel *contact =[sharedGlobalVars.contactsContent objectAtIndex:index.section   * 2 + index.row];
    detailView.contact = contact;
}

详细信息视图 - 在此方法中将对象分配给UI

- (void) loadContent
{
ImageCache *imgCache = [ImageCache sharedImageCache];
//publisherPhone1.text = self.contact.phone1;
publisherPhone2.text = self.contact.phone2;   //THIS NOT WORKING IF NULL
publisherFullName.text = self.contact.fullname;
UIImage *image = [imgCache getCachedImage:self.contact.thumb_url];
publisherImage.image = image;

}

当我输出对象的值时,这是我得到的一个例子

The value of phone2: <null>

如果我更改我的加载内容方法以设置self.contact.phone2 = nil进行测试,一切都很好。这就是让我觉得和nil之间存在差异和问题的原因。

感谢您提供的任何帮助

1 个答案:

答案 0 :(得分:2)

这个article描述了nil,Nil和NSNull之间的区别。享受。

P.S。

  

self.contact.phone2 = nil;

我猜,

会更好。