gpt4 book ai didi

ios 如何正确使用 NSPredicate 将 NSString 与核心数据匹配?

转载 作者:行者123 更新时间:2023-11-28 20:32:59 24 4
gpt4 key购买 nike

我正在尝试使用以下代码将实体插入或更新(如果存在)到核心数据中:

- (void)insertFriendWithDictionary:(NSDictionary *)friendInfo {

NSFetchRequest *req = [[NSFetchRequest alloc] initWithEntityName:@"Friend"];

NSString *atributeName = @"identifier";
NSString *valueName = [[friendInfo objectForKey:@"id"] stringFromMD5];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K like %@",atributeName,valueName ];
req.predicate = predicate;

req.fetchLimit = 1;
NSError *requestError = nil;
NSArray *tmp = [self.managedObjectContext executeFetchRequest:req error:&requestError];

if (tmp && tmp.count >0) {
Friend *friend = [tmp objectAtIndex:0];
friend.name = [friendInfo objectForKey:@"name"];
friend.identifier = [NSString stringWithFormat:@"%@",[[friendInfo objectForKey:@"id"] stringFromMD5]];
[self saveContext];
return;
}

Friend *friend =
[NSEntityDescription insertNewObjectForEntityForName:@"Friend"
inManagedObjectContext:self.managedObjectContext];
friend.name = [friendInfo objectForKey:@"name"];
friend.identifier = [friendInfo objectForKey:@"id"];
friend.noOfMessagesReceived = [NSNumber numberWithInt:0];
friend.email = @"";
friend.selected = [NSNumber numberWithBool:NO];
friend.frooiFriend = [NSNumber numberWithBool:NO];
}

但是第二次运行代码时,谓词没有匹配到任何结果。我相信这是 NSPredicate 的问题。

这是为 Friend 生成的代码:

@interface Friend : NSManagedObject

@property (nonatomic, retain) NSString * email;
@property (nonatomic, retain) NSNumber * frooiFriend;
@property (nonatomic, retain) NSString * identifier;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * noOfMessagesReceived;
@property (nonatomic, retain) NSData * profileImage;
@property (nonatomic, retain) NSNumber * selected;
@property (nonatomic, retain) NSNumber * frooliMessagesSentTo;

@end

我做错了什么吗?

谢谢

最佳答案

[friendInfo objectForKey:@"id"]是否等于[[friendInfo objectForKey:@"id"] stringFromMD5]

如果不是:这是你的问题,因为你正在为新 friend 设置 friend.identifier = [friendInfo objectForKey:@"id"];,但是你用于搜索 friend 的谓词使用[[friendInfo objectForKey:@"id"] stringFromMD5]

关于ios 如何正确使用 NSPredicate 将 NSString 与核心数据匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11581566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com