如何限制在核心数据中输入null值? [英] How to restrict entry of null value in coredata?

查看:130
本文介绍了如何限制在核心数据中输入null值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发基于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){
//创建一个新的托管对象
NSManagedObject * newDevice = [NSEntityDescription insertNewObjectForEntityForName: @demoinManagedObjectContext:context];
[newDevice setValue:self.Name forKey:@nameofentry];
[newDevice setValue:self.WebsiteName forKey:@sitename];
[newDevice setValue:self.Feedlink forKey:@urloffeed];

NSError * error = nil;
//将对象保存到持久存储
if(![context save:& error]){
NSLog(@无法保存!%@%@ [error localizedDescription]);
}

}

有人请帮我解决这个问题

 <$> 

解决方案

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

在核心数据中保存值之前,请检查您的值为空。

  if([[context executeFetchRequest:fetchRequest error:NULL] count] == 0){
//创建一个新的托管对象
NSManagedObject * newDevice = [NSEntityDescription insertNewObjectForEntityForName:@demoinManagedObjectContext:context];
if(IS_NOT_NIL_OR_NULL(self.Name))
{
[newDevice setValue:self.Name forKey:@nameofentry];
} else
{
//处理else case。在这里get self.name的值为null。

}

if(IS_NOT_NIL_OR_NULL(self.WebsiteName))
{
[newDevice setValue:self.WebsiteName forKey:@sitename];
} else
{
//处理else case。在这里获取self.WebsiteName值为null。

}


if(IS_NOT_NIL_OR_NULL(self.Feedlink))
{
[newDevice setValue:self.Feedlink forKey:@ urloffeed];
} else
{
//处理else case。 get self.Feedlink值为null。

}

NSError * error = nil;
//将对象保存到持久存储
if(![context save:& error]){
NSLog(@无法保存!%@%@ [error localizedDescription]);
}

}

希望它帮助你。 p>

I am working on XMLparsing based project and I used coredata to store url .

But some time coredata enter's null value I don't know why such type of problem occurs.

Here is my code which I have tried.

- (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]);
        }

    }

Someone please help me regarding this issue ?

解决方案

define macros as .

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

Before saving the value in core data check your value for 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]);
    }

}

Hope it help you .

这篇关于如何限制在核心数据中输入null值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆