AFNetworking - Request format is not proper when using dictionaries - ios

I'm sending a dictionary 'childDetails' which has a dictionary (rewards) as one of its objects.
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:url parameters:childDetails constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
This "rewards" dictionary has two keys "name" and "value" which looks like {#"name",#"Reward 1",#"value",#"10"}.
when this gets posted to the server, the server receives it as follows;
Array
(
[group_id] => 5
[name] => John Doe
[rewards] => Array
(
[0] => Array
(
[name] => Sample reward 2
)
[1] => Array
(
[value] => 50
)
[2] => Array
(
[name] => Sample Reward 1
)
[3] => Array
(
[value] => 10
)
)
[tasks] => Array
(
[0] => Array
(
[title] => Default task one
)
[1] => Array
(
[title] => Default task two
)
[2] => Array
(
[title] => Default task five
)
)
[token] => 5332884c2bc8c5
)
Any Idea how to fix this?
Any help is much appreciated.
Thanks in advance

I think the "parameters: param of POST: only accepts key/value pairs. Are you sure you don't have to serialize manually your objects first ?
Can you print the content of "childDetails" please ?

I found out that inorder to get it to work, you have to reformat your dictionary.
In my case I had to change it as;
NSDictionary *parameters = #{
#"rewards": #[
{#"reward name",#"reward value"},
{#"reward name",#"reward value"}
]
};;

Related

unset not deleting key in multidimensional array

I have multidimensional array and wants to remove delivery location where ever it exists
Array
(
[0] => Array
(
[amountReceived] => 1
[deliveryLocation] => germany
)
[1] => Array
(
[amountReceived] => 2
[deliveryLocation] => bulgaria
)
)
PHP
foreach ($arr as $val)
{
foreach($val as $k => $v)
{
if($k == 'deliveryLocation')
{
unset($arr[$k]);
}
}
}
return $arr;
problem is it's returning above array as it is without removing any key from it.
Easy and fast to understand way
$t=0;
foreach ($arr as $val)
{
unset($arr[$temp]['deliveryLocation']);
$t++;
}

Index in foreach starts not with 0

$rounds = $season->championsLeague->rounds->where('stage', 'Olympic')->take(2);
$indexes = [];
foreach ($rounds as $index => $round) {
$indexes[] = $index;
}
echo '<pre>';print_r($indexes);echo '<pre>';
And I receive in indexes: Array
(
[0] => 6
[1] => 7
)
How it is possible?
Why not Array
(
[0] => 0
[1] => 1
)
The slice, chunk, and reverse methods now preserve keys on the collection. If you do not want these methods to preserve keys, use the values method on the Collection instance. This is from laravel documentation. I think it is true for take method also.

iOS: adding key/value to multidimentional array at specific index

I'm pretty new in iOS dev. Basically I have a multidimensional array as per below
Array
(
[0] => Array
(
[Name] => Peter
[Gender] => Male
)
[1] => Array
(
[Name] => Glenn
[Gender] => Female
)
[2] => Array
(
[Name] => Richard
[Gender] => Male
)
)
At some point, I am going to add in additional key/value at certain index. Take for example, I am adding a new entry at index 1 at the end of the array(the sequence is not something to bother actually, it can fit in front or at the end) with [Location] => Japan
As such, the array should looks like this:
Array
(
[0] => Array
(
[Name] => Peter
[Gender] => Male
)
[1] => Array
(
[Name] => Glenn
[Gender] => Female
[Location] => Japan
)
[2] => Array
(
[Name] => Richard
[Gender] => Male
)
)
How can I achieve that? Pls inspect my code below as I really have no idea as every attempt results in EXC_BAD_ACCESS or app being terminated. Thanks in advance, Jason.
for(int x=0; x<[arrayVisitor count]; x++)
{
if ([[[arrayVisitor objectAtIndex:x]objectForKey:(#"Gender")]isEqual:#"Female"])
[[arrayVisitor objectAtIndex:x] addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys: #"Location",#"Japan",nil]];
}
For this type of adding key value pair to array you need to use NSMutableArray and NSMutableDictionary.
NSMutableArray *outerArray=[[NSMutableArray alloc] init];
NSMutableDictionary *mutableDict=[[NSMutableDictionary alloc]initWithDictionary:[outerArray objectAtIndex:1]];
[mutableDict setObject:#"Japan" forKey:#"Location"];
[outerArray replaceObjectAtIndex:1 withObject:mutableDict];
Or using for loop as:------------------
NSMutableArray *arrayVisitor=[[NSMutableArray alloc] init];
int arrayLength=arrayVisitor.count;
for (int i=0;i<arrayLength;i++) {
NSMutableDictionary *mutableDict=[[NSMutableDictionary alloc]initWithDictionary:[arrayVisitor objectAtIndex:i]];
if ([[mutableDict valueForKey:#"Gender"] isEqualToString:#"Female"]) {
[mutableDict setObject:#"Japan" forKey:#"Location"];
[arrayVisitor replaceObjectAtIndex:i withObject:mutableDict];
}
}
Note:- It is not multidimensional array , it is Array of NSDictionary objects,It should look like this
Array=(
{
Name= Peter
Gender= Male
},
{
Name = Glenn
Gender = Female
},
{
Name = Richard
Gender = Male
}
)

How to: parse a string 'mm/yyyy' into a date in PHP5.3?

I come from Java & C# worlds, and just wondering how do I parse a string formatted as mm/yyyy into a date in PHP 5.3.
I've tried with the following:
date_parse_from_format('mm/yyyy', '05/2013');
Then the returned array complains with errors:
[2] => Unexpected data found.
[5] => The separation symbol could not be found
[7] => Data missing
How to parse to date a string formatted as mm/yyyy in PHP 5.3?
Here is the complete var_dump:
Array
(
[year] => 2013
[month] => 20
[day] =>
[hour] =>
[minute] =>
[second] =>
[fraction] =>
[warning_count] => 0
[warnings] => Array
(
)
[error_count] => 3
[errors] => Array
(
[2] => Unexpected data found.
[5] => The separation symbol could not be found
[7] => Data missing
)
[is_localtime] =>
)
Use 'm/Y' instead of 'mm/yyyy'. Look at the date() function for details.
date_parse_from_format('m/Y', '05/2013');
What to do next...first of all I'd use Object oriented style:
$date = DateTime::createFromFormat('m/Y', '05/2013');
// 2013-05
echo $date->format('Y-m');
// 1369946144 UNIX timestamp
echo $timestamp = $date->format('U');
// 2013-05 using date(), procedural style
echo date('Y-m', $timestamp );

Neo4j ResultSet Object - how to get data if result is an array

I have one gremlin query in which I used cap().next()
and Everyman\Neo4j\Query\ResultSet Object is
...
[data:protected] => Array
(
[v[1079]] => Array
(
[0] => 14
)
[v[1082]] => Array
(
[0] => 25
)
[v[1016]] => Array
(
[0] => 5
)
[v[1078]] => Array
(
[0] => 10
)
[v[1081]] => Array
(
[0] => 17
)
)
...
how to get that array?
$result[0][0] is not working.
To iterate ResultSets use
foreach ($result as $row) {
echo $row['x']->getProperty('your_property') . "\n";
}
or with scalar values in column y
foreach ($result as $row) {
echo $row['x']->getProperty('your_property') . ": " . $row['y'] ."\n";
}
It would be nice to have the original gremlin query thought to see what you are returning from it.
see github

Resources