如何限制在核心数据中输入null值? [英] How to restrict entry of null value in coredata?
本文介绍了如何限制在核心数据中输入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屋!
查看全文