iphone - 核心数据实体属性的初始值?

标签 iphone cocoa nsstring

我有几个核心数据实体,其中包含一堆空的 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/

相关文章:

iphone - iOS 7 UITableView 索引路径行属性为零

iphone - 不透明 UIImageView 内图像的透明度

objective-c - 64 位 NS_OPTIONS 位掩码

objective-c - 来自核心数据和外部源的模型对象

ios - 将 NSString 中的事件替换为 NSArray 中的事件

cocoa - 检查 NSString 中的特殊字符

iphone - 使用 sizeWithFont 时的高度 :constrainedToSize:lineBreakMode with NSLineBreakByTruncatingTail

ios - 应用程序在 iPhone 中以黑屏启动

iphone - 从 UIAlertView 检索输入文本

cocoa - 10.8 标准共享图标 - 从哪里获得?