【问题标题】:How to restrict entry of null value in coredata?如何限制coredata中空值的输入?
【发布时间】:2016-01-25 03:46:59
【问题描述】:

我正在研究基于 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 core-data xml-parsing


    【解决方案1】:

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

    【讨论】:

    • 我只想检查 url 所以, url 是 string 。所以,我认为这对我没有帮助。
    【解决方案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]);
        }
    
    }
    

    希望对你有帮助。

    【讨论】:

    • 我必须在哪里设置这个条件?抱歉,如果我问的是愚蠢的问题,但我是 ios 新手。请帮帮我。
    • 就在核心数据中设定值之前。
    • 出现类似 . `'IS_NOT_NIL_OR_NULL' 在 C99 中无效`
    • 好吧,我忘了将宏定义为 .. #define IS_NOT_NIL_OR_NULL(value) (value != nil && value != Nil && value != NULL && value != (id)[NSNull null]) ;
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 2012-04-25
      • 1970-01-01
      • 2012-05-03
      • 2014-04-14
      • 1970-01-01
      相关资源
      最近更新 更多