1

私のアプリケーションでは、コアデータをクエリする必要があります。json文字列を格納するフィールドを含むテーブルがあります。次に、このフィールド内に特定のキーと値のペアを持つエントリについて、このテーブルをクエリする必要があります。私はすでにLIKE式でこれを解決しようとしましたが、ワイルドカードはNEWLINEに一致するため、これはあまりうまくいきませんでした。今、私はMATCHES操作でどの正規表現を使用する必要があるかを理解することに固執しています。

キーと値のサブストリングは既知であり、それらを含むエントリを見つける必要があります。他には何もありません:)

4

2 に答える 2

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式を使用してクエリを使用できます

于 2012-05-25T15:27:22.323 に答える
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++;
    }

}
于 2012-05-29T08:47:41.593 に答える