如何限制在coredata中输入null值?

How to restrict entry of null value in coredata?

提问人:krina_patel 提问时间:10/26/2015 最后编辑:Leokrina_patel 更新时间:10/27/2015 访问量:836

问:

我正在处理基于XMLparsing的项目,我使用coredata来存储url。

但是有时coredata输入的null值我不知道为什么会出现这种类型的问题。

这是我尝试过的代码。

- (void)feedParserDidFinish:(MWFeedParser *)parser {


    NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"demo"];

    fetchRequest.predicate = [NSPredicate predicateWithFormat:@"urloffeed = %@", self.Feedlink];

    NSManagedObjectContext *context = [self managedObjectContext];

    if ([[context executeFetchRequest:fetchRequest error:NULL] count] == 0) {
        // Create a new managed object
        NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"demo" inManagedObjectContext:context];
        [newDevice setValue:self.Name forKey:@"nameofentry"];
        [newDevice setValue:self.WebsiteName forKey:@"sitename"];
        [newDevice setValue:self.Feedlink forKey:@"urloffeed"];

        NSError *error = nil;
        // Save the object to persistent store
        if (![context save:&error]) {
            NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
        }

    }

有人请帮我解决这个问题吗?

iOS Objective-C iPhone 核心数据 XML 解析

评论


答:

0赞 Prakash 10/26/2015 #1

您可以使用此表达式检查“null”值,如果该值是“null”,则只需插入空白值,否则传递您正在获取的值。非常简单,代替“strname”,只需传递您的键值即可。

 if (strname == nil || strname == (id)[NSNull null])
                {
                    cell.lbltitle.text=@"";

                }
0赞 Garry 10/26/2015 #2

将宏定义为 。

 #define IS_NOT_NIL_OR_NULL(value)           (value != nil && value != Nil && value != NULL && value != (id)[NSNull null])

在将值保存在核心数据中之前,请检查值是否为 null 。

if ([[context executeFetchRequest:fetchRequest error:NULL] count] == 0) {
    // Create a new managed object
    NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"demo" inManagedObjectContext:context];
     if (IS_NOT_NIL_OR_NULL(self.Name))
{
    [newDevice setValue:self.Name forKey:@"nameofentry"];
} else 
 {
    // Handle else case .  get self.name value is null here .

 }

     if (IS_NOT_NIL_OR_NULL(self.WebsiteName))
{
    [newDevice setValue:self.WebsiteName forKey:@"sitename"];
} else 
 {
    // Handle else case .  get self.WebsiteName value is null here .

 }


      if (IS_NOT_NIL_OR_NULL(self.Feedlink))
{
    [newDevice setValue:self.Feedlink forKey:@"urloffeed"];
} else 
 {
    // Handle else case .  get self.Feedlink value is null here .

 }

    NSError *error = nil;
    // Save the object to persistent store
    if (![context save:&error]) {
        NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
    }

}

希望它对你有所帮助。

评论

0赞 krina_patel 10/26/2015
我必须在哪里设置此条件?对不起,如果我问的是愚蠢的问题,但我是 iOS 的新手。请帮帮我.
0赞 Garry 10/26/2015
就在核心数据中设置值之前。
0赞 krina_patel 10/27/2015
出现类似 .''IS_NOT_NIL_OR_NULL'在 C99 中无效'
0赞 Garry 10/27/2015
好的,我忘了将宏定义为..#define IS_NOT_NIL_OR_NULL(value) (value != nil && value != Nil && value != NULL && value != (id)[NSNull null]);
0赞 krina_patel 10/27/2015
我收到像这个宏一样的错误。)
1赞 Sauvik Dolui 10/27/2015 #3

取消选中 from CoreData 属性编辑器怎么样?Optional

enter image description here

评论

0赞 krina_patel 10/27/2015
我只想检查 url,所以 url 是字符串。所以,我认为这对我没有帮助。