IOS/Objective-C:从 NSManagedObject 构建 NSDictionary
IOS/Objective-C: Build NSDictionary from NSManagedObject
我正在尝试从 NSManagedObject 构建 NSDictionary。我的印象是你可以这样做: NSMutableDictionary *myDict;
[myDict setObject:self.title forKey:@"title"];
}
因为字典不能包含 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
。您需要改为检查 != nil
。有关 null 和 nils 之间差异的详细解释,请参见 here。
我正在尝试从 NSManagedObject 构建 NSDictionary。我的印象是你可以这样做: NSMutableDictionary *myDict; [myDict setObject:self.title forKey:@"title"]; }
因为字典不能包含 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
。您需要改为检查 != nil
。有关 null 和 nils 之间差异的详细解释,请参见 here。