我正在基于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/