IOS/Objective-C:从NSManagedObject构建NSDictionary

IOS/Objective-C:从NSManagedObject构建NSDictionary,ios,objective-c,nsdictionary,Ios,Objective C,Nsdictionary,我正在尝试从NSManagedObject构建NSDictionary。我的印象是你可以用:NSMutableDictionary*myDict; [myDict setObject:self.title forKey:@“title”]; } 因为字典不能保存nil值,所以我首先测试nil。但是,当我使用中断验证属性是否有值时,当我构建字典时,它是nil。它使用断点显示为nil,并将控制台日志记录为NULL。如果有人能确认以下是创建词典的有效方法,我们将不胜感激,如果是,为什么词典为零 NSS

我正在尝试从NSManagedObject构建NSDictionary。我的印象是你可以用:NSMutableDictionary*myDict; [myDict setObject:self.title forKey:@“title”]; }

因为字典不能保存nil值,所以我首先测试nil。但是,当我使用中断验证属性是否有值时,当我构建字典时,它是nil。它使用断点显示为nil,并将控制台日志记录为NULL。如果有人能确认以下是创建词典的有效方法,我们将不胜感激,如果是,为什么词典为零

NSString *title = @"Test";
NSNumber *complete = @1;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *lasttouchedstr =[dateFormatter stringFromDate:[NSDate date]];

 NSMutableDictionary *myDict;
     if (self.title.length>=1) {
    [myDict setObject:self.title forKey:@"title"];
     }
    if (![self.complete isKindOfClass:[NSNull class]]) {
        [myDict setObject:self.complete forKey:@"complete"];
    }
    if (![self.lasttouched isKindOfClass:[NSNull class]]) {
        [myDict setObject:lasttouchedstr forKey:@"lasttouchedstr"];
    }
NSLog(@"myDict is:%@",myDict)//Logs as NULL
    return myDict;

提前感谢您的建议。

NSMutableDictionary*myDict声明该值,但不初始化它。你需要

NSMutableDictionary *myDict = [[NSMutableDictionary alloc] init];

其次,托管对象不会为其任何属性返回
NSNull
值。您需要检查
!=无
。有关null和nils之间差异的详细解释,请参见

太棒了!解决了我的问题。谢谢你的链接。我不断发现NSNull和nil令人困惑。