json字段中键值的核心数据

时间:2012-05-25 14:26:38

标签: ios regex core-data

在我的应用程序中,我需要查询核心数据,我有一个表,其中包含一个存储json字符串的字段。现在我需要查询此表以查找在此字段中具有特定键值对的任何条目。我已经尝试用LIKE表达式来解决这个问题,但是由于WILDCARDS与NEWLINE相匹配,所以这并不是很好。现在我坚持要弄清楚我必须使用MATCHES操作的正则表达式。

该值的键和子字符串是已知的,我只需要找到包含它们的条目,没有别的 :)

2 个答案:

答案 0 :(得分:1)

你可以为该实体写一个getter属性,它只返回一个普通字符串而不是json字符串,如:

- (NSString *)stringRepresentation
{ 
  NSError *error = nil; 
  NSData* data=[self.jsonStringProperty dataUsingEncoding:NSUTF8StringEncoding];
  NSString *string = [JSONObjectWithData:data options:0 error:&error];
  if (error) {
   ... // error handling
  }
  return string;
}

然后,您可以在该属性上使用LIKE表达式的查询

答案 1 :(得分:1)

用正则表达式解决了它:

    for(NSString* value in values)
{
    if(value.length > 0)
    {
        if(i > 0)
        {
            [query appendString:@" OR "];

        }
        [query appendFormat:@" (json_data MATCHES[c] '.*?\"%@\\\":\\\"([^\"]*)%@([^\"]*)\".*?')",key,value];
        i++;
    }

}