我有几个核心数据实体,其中包含一堆空的 NSString
属性。
我解析了一些 XML 并设置了我可以获取的属性,并希望将“空”属性设置为“n/a”,如“不可用”中所示。因此,如果我的 XML 不包含值,它会通过给它一个“n/a”字符串来整理实体,我可以稍后进行测试,如果其中之一使其成为 UILabel,它也不会显示 (null) ..这引出了我的问题:
我这样做是为了测试实体上的属性是否已经存在、nil或为空:
for(NSString *s in allPossibleStrings) {
if([[f valueForKey:s] isKindOfClass:[NSString class]] && [[f valueForKey:s] isEqualToString:@""]) {
[f setValue:@"n/a" forKey:s];
}
if ([[f valueForKey:s] isKindOfClass:[NSString class]] && [f valueForKey:s] == nil) {
[f setValue:@"n/a" forKey:s];
}
}
但事实证明,我最终仍然有很多值显示为 (null)。
所以我在想该属性是否可以是 @""
空或 (nil)
我相信 NSManagedObject 应该符合 KVC 标准,所以我做了一个测试,我按属性复制了 NSManagedObject 属性,唯一的区别是它只是 NSObject 而不是 NSManagedObject 的子类。 遗憾的是,这的行为方式完全相同。它还将值保留为 (null)
希望有人能够发现我在这些字符串测试中出错的地方:)
谢谢
最佳答案
您可以将实体的默认属性值设置为“N/A”(这是一个很好的做法,因为您可能希望使用 sqlite 进行 iPhone 应用程序传送,并且它不能很好地处理空值,因为 sqlite 和 cocoa 没有与“null”相同的愿景)并将“可选”设置为“否”。
if([[f valueForKey:s] isKindOfClass:[NSString class]] && [[f valueForKey:s] isEqualToString:@"NA"]) {
//Tell your program to know that it's null if it needs to know
}
干杯
关于iphone - 核心数据实体属性的初始值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2179208/