ios - 如何限制在coredata中输入空值?

标签 ios objective-c iphone core-data xml-parsing

我正在基于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]);
        }

    }

有人请帮我这个问题吗?

最佳答案

将宏定义为。

 #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 - 如何限制在coredata中输入空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33339061/

相关文章:

iphone - 初始化纵向和横向的 UIViewController

ios - SKScene.backgroundColor不起作用。始终为默认颜色

ios - Objective-C : Auto Layout with existing Custom View changing bounds width and height to 0, 0

objective-c - 难以理解 Objective-C 中的指针

ios - UIWebView 在用户点击链接标签时禁用高亮

iphone - iTunes 应用内购买

ios - 在 Swift 3 中处理 Google 登录时遇到问题

iphone - CGRectUnion() 的相反结果是什么?

iphone - 每秒向服务器发送验证请求(重复任务)

ios - 以编程方式将新电话号码添加到地址簿中的联系人(iPhone)