У меня проблема при добавлении арабской строки в NSMutableArray
или NSMutableDictionary
.
Пример:
NSMutableDictionary *data = [[NSMutableDictionary alloc]init];
[data setObject:@"فرسان" forKey:@"name"];
NSLog(@"%@",data);
Вывод:
2012-01-18 21:55:05.646 aa[367:207] {
name = "\U0641\U0631\U0633\U0627\U0646";
}
моя проблема точно, я сохраняю эти данные в sqlite [data objectForKey: @ "name"] его сохраненные \ U0641 \ U0631 \ U0633 \ U0627 \ U0646 и при получении данных, чтобы поместить их в UILabel или что-нибудь подобное тексту будет \ U0641 \U0631 \ U0633 \ U0627 \ U0646
Любая помощь?Спасибо:)
- (void)SaveMessage {
NSMutableDictionary *TableProperties = [[NSMutableDictionary alloc]init];
[TableProperties setObject:@"INSERT" forKey:@"Operation"];
[TableProperties setObject:@"savedmessages" forKey:@"tableName"];
NSString *string = [[NSString alloc]initWithFormat:@" %@",MessageBox.text];
[TableProperties setValue:string forKey:@"message"];
NSString *msgResult;
NSArray *result = [[DatabaseFunctions database] DataBaseOperation:TableProperties];
if ([[result objectAtIndex:0] isEqualToString:@"Done"])
msgResult = @"تم حفظ الرسالة بنجاح";
else
msgResult = @"لم تت العملية بنجاح حاول لاحقا";
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"حفظ الرسالة"
message:msgResult
delegate:self
cancelButtonTitle:@"موافق"
otherButtonTitles:nil, nil ];
[alert show];
}
- (NSArray *)DataBaseOperation:(NSMutableDictionary *)TableProperties{
NSMutableArray *retval = [[NSMutableArray alloc] init];
NSString *Operation = [TableProperties objectForKey:@"Operation"];
if ([Operation isEqualToString:@"SELECT" ]) {
NSString *tableColumns = [TableProperties objectForKey:@"tableColumns"];
NSString *tableName = [TableProperties objectForKey:@"tableName"];
NSString *tableWhere = [TableProperties objectForKey:@"tableWhere"];
NSString *tableOrder = [TableProperties objectForKey:@"tableOrder"];
NSString *tableLimit = [TableProperties objectForKey:@"tableLimit"];
NSString *Query;
if ([tableLimit isEqualToString:@"NO"]) {
Query = [[NSString alloc] initWithFormat:@"SELECT %@ FROM %@ WHERE %@ ORDER BY %@",
tableColumns,tableName,tableWhere,tableOrder,tableLimit];
}else{
Query = [[NSString alloc] initWithFormat:@"SELECT %@ FROM %@ WHERE %@ ORDER BY %@ LIMIT %@",
tableColumns,tableName,tableWhere,tableOrder,tableLimit];
}
NSArray *FieldArray = [[TableProperties objectForKey:@"tableColumns"] componentsSeparatedByString:@","];
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(_database, [Query UTF8String], -1, &statement, nil) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
NSMutableDictionary *Row = [[NSMutableDictionary alloc]init];
NSString *uniqueId = [[NSString alloc] initWithFormat:@"%i",sqlite3_column_int(statement, 0)];
[Row setObject:uniqueId forKey:@"uniqueId"];
for (int i = 1; i<[FieldArray count]; i++) {
NSString *column = [[NSString alloc] initWithUTF8String:(char *) sqlite3_column_text(statement, i)];
[Row setObject:column forKey:[FieldArray objectAtIndex:i]];
}
Objects *rowOfTable = [[Objects alloc] initSelectDataFromTables:Row];
Row = nil;
[retval addObject:rowOfTable];
}
sqlite3_finalize(statement);
}
}
else if([Operation isEqualToString:@"INSERT" ]) {
NSString *tableName = [TableProperties objectForKey:@"tableName"];
[TableProperties removeObjectForKey:@"Operation"];
[TableProperties removeObjectForKey:@"tableName"];
NSArray *Columns = [TableProperties allKeys];
NSArray *Values = [TableProperties allValues];
NSString *Query = [[NSString alloc] initWithFormat:@"INSERT INTO %@ %@ VALUES %@",tableName,Columns,Values];
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(_database, [Query UTF8String], -1, &statement, nil) == SQLITE_OK)
if (SQLITE_DONE!=sqlite3_step(statement)){
NSLog(@"Error when inserting %s",sqlite3_errmsg(_database));
[retval addObject:@"Error"];
}else{
NSLog(@"Data inserted Successfully");
[retval addObject:@"Done"];
}
else{
NSLog(@"Error when inserting %s",sqlite3_errmsg(_database));
[retval addObject:@"Error"];
}
sqlite3_finalize(statement);
}
return retval;
}