[英]ios coredata How to check that rssfeed url is exist in coredata or not
我想進行設置,如果rss feedurl在coredata中可用,則僅進行解析,否則它將存儲在coredata中。 我已嘗試參考此問題實施方法
iOS Coredata檢查屬性是否存在
這是我的嘗試:
- (void)feedParserDidFinish:(MWFeedParser *)parser {
[HUD hide:YES];
//**Coredata inserting value**//
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"maindata"];
NSFetchRequest *fetchrequestforside=[NSFetchRequest fetchRequestWithEntityName:@"anotherdata"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"urloffeed = %@", self.linkfeed];
fetchrequestforside.predicate=[NSPredicate predicateWithFormat:@"furloffeed = %@", self.linkfeed];
NSManagedObjectContext *context = [self managedObjectContext];
if ([[context executeFetchRequest:fetchRequest error:NULL] count] == 0) {
// Create a new managed object
NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"maindata" inManagedObjectContext:context];
[newDevice setValue:self.Name forKey:@"urlname"];
[newDevice setValue:self.WebsiteName forKey:@"websitename"];
[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]);
}
}
if ([[context executeFetchRequest:fetchrequestforside error:NULL] count] == 0) {
// Create a new managed object
NSManagedObject *newDevice1 = [NSEntityDescription insertNewObjectForEntityForName:@"anotherdata" inManagedObjectContext:context];
if (self.urlname) {
[newDevice1 setValue:self.Name forKey:@"urlname"];
}
if (self.WebsiteName) {
[newDevice1 setValue:self.WebsiteName forKey:@"websitename"];
}
if (self.urloffeed) {
[newDevice1 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]);
}
}
注意:-我必須將網址保存在兩個實體中。
如果要基於特定屬性的值不止一次地插入實體,則可能需要編寫一個輔助方法。
這樣的事情可能會做您想要的。 如果插入了對象,則返回YES
。 在這種情況下, objectPtr
將包含新插入的對象。 如果對象已經存在,或者嘗試執行插入操作時出錯,則返回NO
。 objectPtr
將包含現有對象,或者errorPtr
將包含錯誤。
- (BOOL)insertEntity:(NSString*)entity
withValue:(id)value
forKey:(NSString*)key
inMOC:(NSManagedObjectContext*)moc
object:(NSManagedObject**)objectPtr
error:(NSError**)errorPtr {
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:entity];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"%K = %@", key, value];
fetchRequest.fetchLimit = 1;
BOOL inserted = NO;
NSArray *result = [moc executeFetchRequest:fetchRequest error:errorPtr];
if (result) {
NSManagedObject *object = [result firstObject];
if (object == nil) {
object = [NSEntityDescription insertNewObjectForEntityForName:entity
inManagedObjectContext:moc];
[object setValue:value forKey:key];
inserted = YES;
}
if (objectPtr) {
*objectPtr = object;
}
} else if (objectPtr) {
*objectPtr = nil;
}
return inserted;
}
然后,您可以像這樣使用它...
NSManagedObject *object;
NSError *error;
if ([self insertEntity:@"maindata"
withValue:self.Feedlink
forKey:@"urloffeed"
inMOC:context
object:&object
error:&error]) {
[object setValue:self.Name forKey:@"urlname"];
[object setValue:self.WebsiteName forKey:@"websitename"];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.