How can I populate a few UILabels on a ViewController from the JSON object I receive from a previously passed id parameter? I get the response from the server but, I don't know how to populate the key/value pairs to a UILabel.
The JSON response I get is:
{
product = {
attributes = (
);
"average_rating" = "0.00";
backordered = 0;
"backorders_allowed" = 0;
"button_text" = "";
"catalog_visibility" = visible;
categories = (
);
"created_at" = "2016-02-23T05:00:55Z";
"cross_sell_ids" = (
);
description = "<p>Microsoft Office</p>\n";
dimensions = {
height = "";
length = "";
unit = in;
width = "";
};
"download_expiry" = 0;
"download_limit" = 0;
"download_type" = "";
downloadable = 0;
downloads = (
);
featured = 0;
"featured_src" = "https://qashop.taxometry.com/wordpressv4/wp-content/uploads/2016/02/softwarecontract-150x150.jpg";
"grouped_products" = (
);
id = 15;
images = (
{
alt = "";
"created_at" = "2016-02-23T05:01:35Z";
id = 16;
position = 0;
src = "https://qashop.taxometry.com/wordpressv4/wp-content/uploads/2016/02/softwarecontract-150x150.jpg";
title = "softwarecontract-150×150";
"updated_at" = "2016-02-23T05:01:35Z";
}
);
"in_stock" = 1;
"managing_stock" = 0;
"menu_order" = 0;
"on_sale" = 1;
parent = (
);
"parent_id" = 0;
permalink = "https://qashop.taxometry.com/wordpressv4/product/software-contract/";
price = 25;
"price_html" = "<del><span class=\"amount\">$30.00</span></del> <ins><span class=\"amount\">$25.00</span></ins>";
"product_url" = "";
"purchase_note" = "";
purchaseable = 1;
"rating_count" = 0;
"regular_price" = 30;
"related_ids" = (
);
"reviews_allowed" = 1;
"sale_price" = 25;
"shipping_class" = "";
"shipping_class_id" = "<null>";
"shipping_required" = 1;
"shipping_taxable" = 1;
"short_description" = "";
sku = 2370;
"sold_individually" = 0;
status = publish;
"stock_quantity" = "<null>";
tags = (
);
"tax_class" = "";
"tax_status" = taxable;
taxable = 1;
title = "Software Contract";
"total_sales" = 5;
type = simple;
"updated_at" = "2016-02-23T05:01:41Z";
"upsell_ids" = (
);
variations = (
);
virtual = 0;
visible = 1;
weight = "<null>";
};
}
Try this - > First
then Second
Related
please tell me how to unwrap this josn response because of optional json i am not able to parse in label
i have tried my best but i am new to swift so i can't get it to unwrap the optional json
response::
Optional(<__NSArrayM 0x600000848340>(
{
contributors = "";
coordinates = "";
"created_at" = "Thu Jul 12 11:49:57 +0000 2018";
entities = {
hashtags = (
);
media = (
{
"display_url" = "pic.twitter.com/IJtq6aLM7K";
"expanded_url" = "";
id = 1017375504448479232;
"id_str" = 1017375504448479232;
indices = (
12,
35
);
"media_url" = "";
"media_url_https" = "";
sizes = {
large = {
h = 1820;
resize = fit;
w = 2048;
};
medium = {
h = 1067;
resize = fit;
w = 1200;
};
small = {
h = 604;
resize = fit;
w = 680;
};
thumb = {
h = 150;
resize = crop;
w = 150;
};
};
type = photo;
url = "";
}
);
symbols = (
);
urls = (
);
"user_mentions" = (
);
};
"extended_entities" = {
media = (
{
"display_url" = "pic.twitter.com/IJtq6aLM7K";
"expanded_url" = "";
id = 1017375504448479232;
"id_str" = 1017375504448479232;
indices = (
12,
35
);
"media_url" = "";
"media_url_https" = "";
sizes = {
large = {
h = 1820;
resize = fit;
w = 2048;
};
medium = {
h = 1067;
resize = fit;
w = 1200;
};
small = {
h = 604;
resize = fit;
w = 680;
};
thumb = {
h = 150;
resize = crop;
w = 150;
};
};
type = photo;
url = "";
}
);
};
"favorite_count" = 0;
favorited = 0;
geo = "";
id = 1017375507174719488;
"id_str" = 1017375507174719488;
"in_reply_to_screen_name" = "";
"in_reply_to_status_id" = "";
"in_reply_to_status_id_str" = "";
"in_reply_to_user_id" = "";
"in_reply_to_user_id_str" = "";
"is_quote_status" = 0;
lang = fr;
place = "";
"possibly_sensitive" = 0;
"retweet_count" = 0;
retweeted = 0;
source = "";
text = "Tweet Tweet ";
truncated = 0;
user = {
"contributors_enabled" = 0;
"created_at" = "Tue Mar 27 05:14:33 +0000 2018";
"default_profile" = 1;
"default_profile_image" = 0;
description = "";
entities = {
description = {
urls = (
);
};
};
"favourites_count" = 3;
"follow_request_sent" = 0;
"followers_count" = 1;
following = 0;
"friends_count" = 0;
"geo_enabled" = 1;
"has_extended_profile" = 0;
id = 978500498897563648;
"id_str" = 978500498897563648;
"is_translation_enabled" = 0;
"is_translator" = 0;
lang = en;
"listed_count" = 0;
location = "";
name = Mike;
notifications = 0;
"profile_background_color" = F5F8FA;
"profile_background_image_url" = "";
"profile_background_image_url_https" = "";
"profile_background_tile" = 0;
"profile_image_url" = "";
"profile_image_url_https" = "";
"profile_link_color" = 1DA1F2;
"profile_sidebar_border_color" = C0DEED;
"profile_sidebar_fill_color" = DDEEF6;
"profile_text_color" = 333333;
"profile_use_background_image" = 1;
protected = 0;
"screen_name" = Mike50430315;
"statuses_count" = 13;
"time_zone" = "";
"translator_type" = none;
url = "";
"utc_offset" = "";
verified = 0;
};
}
because of this i am getting nil value in all like name text retweet please tell me how to solve this
var timeline = (FHSTwitterEngine.shared().getTimelineForUser(FHSTwitterEngine.shared().authenticatedUsername, isID: true, count: 10), terminator: "")
from this line i am getting whole response
and then i have on array i create and store in to array like below
var serviceData = [AnyObject]()
let timelinedata = [timeline] as [AnyObject]
serviceData = (timelinedata)
print(serviceData)
In general, anything optional can be unwrapped like so:
let optionalValue: String? = "Hello, this is optional!"
if let noLongerOptional = optionalValue {
print("\(noLongerOptional) no its not! ahah")
}
Edit: more specific example...
Assuming you have a variable 'myJson' which hold your optional value... and you did:
print("\(myJson)")
You can solve this by:
if let validJson = myJson {
print("\(validJson)")
}
Edit 2: ... FHSTwitter... (updated.... this is getting long)
let twitterEngine = FHSTwitterEngine.sharedEngine()
let twitterUser = twitterEngine.authenticatedID
let timeline = twitterEngine.getTimelineForUser(twitterUser, isID: true, count: 10)
According to FHSTwitterEngine docs... getTimelineForUser() will return either a NSError or an array of Tweets.
so...
if let error = timeline as? Error {
print("Oops, looks like something went wrong: \(error)")
} else {
if let tweets = timeline as? [Any] {
for tweet in tweets {
print("This is a tweet: \(tweet)")
}
}
}
If you have any more trouble using FHSTwitterEngine, I suggest you play with: https://github.com/natesymer/FHSTwitterEngine/tree/master/FHSTwitterEngineDemoSwift/Demo-Swift
Or open a support ticket with the FHSTwitterEngine developer(s) at: https://github.com/natesymer/FHSTwitterEngine/issues
Good Luck!
JSON OUTPUT:
category = (
{
"category_id" = 1;
column = 0;
description = "";
image = "images/Car Wash.jpg";
"meta_description" = "";
"meta_keyword" = "";
name = "Car Wash";
"parent_id" = "";
"sort_order" = 0;
status = enable;
subcategory = (
{
"category_id" = 6;
column = 0;
description = "";
image = "images/hatchpack.jpg";
"meta_description" = "";
"meta_keyword" = "";
name = hatchpack;
"parent_id" = 1;
"sort_order" = 0;
status = enable;
subcategory = (
);
top = "";
}
);
top = "";
},
{
"category_id" = 2;
column = 0;
description = "";
image = "images/Pest Control.png";
"meta_description" = "";
"meta_keyword" = "";
name = "Pest Control";
"parent_id" = "";
"sort_order" = 0;
status = enable;
subcategory = (
);
top = "";
},
{
"category_id" = 3;
column = 0;
description = "";
image = "images/Electrician.jpg";
"meta_description" = "";
"meta_keyword" = "";
name = Electrician;
"parent_id" = "";
"sort_order" = 0;
status = "";
subcategory = (
);
top = "";
},
{
"category_id" = 4;
column = 0;
description = "";
image = "images/Washing Machine.jpg";
"meta_description" = "";
"meta_keyword" = "";
name = "Washing Machine";
"parent_id" = "";
"sort_order" = 0;
status = "";
subcategory = (
);
top = "";
},
{
"category_id" = 5;
column = 0;
description = "";
image = "images/TV Repair.png";
"meta_description" = "";
"meta_keyword" = "";
name = "TV Repair";
"parent_id" = "";
"sort_order" = 0;
status = enable;
subcategory = (
);
top = "";
},
{
"category_id" = 6;
column = 0;
description = "";
image = "images/hatchpack.jpg";
"meta_description" = "";
"meta_keyword" = "";
name = hatchpack;
"parent_id" = 1;
"sort_order" = 0;
status = enable;
subcategory = (
);
top = "";
}
);
success = 1;
}
MY CODE:
for(NSDictionary *DicHoleCategories in ArrCategory)
{
[DicAllValues setObject:[DicHoleCategories objectForKey:#"subcategory"] forKey:#"subcategory"];
[ArrName addObject:DicAllValues];
}
//did select row at indexpath method//
subCategory = [[ArrName objectAtIndex:indexPath.row] objectForKey:#"subcategory"];
if(subCategory==nil||[subCategory isEqual:#""])
{
productScreen *screen = [[productScreen alloc]init];
screen = [self.storyboard instantiateViewControllerWithIdentifier:#"product"];
[self presentViewController:screen animated:YES completion:nil];
}
else
{
CarDetailsVC *car = [[CarDetailsVC alloc]init];
car=[self.storyboard instantiateViewControllerWithIdentifier:#"category"];
[self presentViewController:car animated:YES completion:nil];
}
Here I have mentioned my code properly,getting the subcategory values has been done and I have comparing the values is null or the string is empty,but only else part is working what I have to do please any one help me.
for(NSDictionary *DicHoleCategories in ArrCategory)
{
[DicAllValues setObject:[DicHoleCategories objectForKey:#"subcategory"] forKey:#"subcategory"];
[ArrName addObject:DicAllValues];
}
//did select row at indexpath method//
NSArray *subCategory=[[ArrName objectAtIndex:indexPath.row] objectForKey:#"subcategory"];
if(subCategory.count ==0)//subcategory is an array
{
productScreen *screen=[[productScreen alloc]init];
screen =[self.storyboard instantiateViewControllerWithIdentifier:#"product"];
[self presentViewController:screen animated:YES completion:nil];
}
else
{
CarDetailsVC *car=[[CarDetailsVC alloc]init];
car=[self.storyboard instantiateViewControllerWithIdentifier:#"category"];
[self presentViewController:car animated:YES completion:nil];
}
You have given && condition inside if statement. Both conditions can't be true simultaneously. Moreover, check your string with isEqualToString method.
So put your if condition as given below -
if([subcategory length] ==0){
// Your code goes here.
}
I've managed to export the below data, multiplied by several hundred, into an NSDictionary. I now need to build out a way to put this data into Tinder style app. Can anyone advise how I can get my app to pull out the data against Key "Title" for various indexes. Currently it pulls out 45 records of data containing that one Title as there are 45 keys in my data set.
{
AttachmentFiles = {
"__deferred" = {
uri = "https://xxxxxxx/_api/Web/Lists(guid'1594ea5e-0ca7-4de3-81aa-4082bde336a4')/Items(3)/AttachmentFiles";
};
};
Attachments = 0;
AuthorId = 22;
AverageRating = "<null>";
BestAnswerId = "<null>";
Body = "We need to think xyz";
CategoriesLookupId = 16;
Community = "<null>";
ContentType = {
"__deferred" = {
uri = "https://xxxxxxx/_api/Web/Lists(guid'1594ea5e-0ca7-4de3-81aa-4082bde336a4')/Items(3)/ContentType";
};
};
ContentTypeId = 0x01200200C5BB1FEE2601B9439CD527C288D85A7B;
Created = "2014-03-21T08:37:33Z";
DescendantLikesCount = 8;
DescendantRatingsCount = "<null>";
DiscussionLastUpdated = "2014-06-19T12:57:58Z";
EditorId = 96;
EmailSender = "<null>";
FieldValuesAsHtml = {
"__deferred" = {
uri = "https://xxxxxxx/_api/Web/Lists(guid'1594ea5e-0ca7-4de3-81aa-4082bde336a4')/Items(3)/FieldValuesAsHtml";
};
};
FieldValuesAsText = {
"__deferred" = {
uri = "https://xxxxxxx/_api/Web/Lists(guid'1594ea5e-0ca7-4de3-81aa-4082bde336a4')/Items(3)/FieldValuesAsText";
};
};
FieldValuesForEdit = {
"__deferred" = {
uri = "https://xxxxxxx/_api/Web/Lists(guid'1594ea5e-0ca7-4de3-81aa-4082bde336a4')/Items(3)/FieldValuesForEdit";
};
};
File = {
"__deferred" = {
uri = "https://xxxxxxx/_api/Web/Lists(guid'1594ea5e-0ca7-4de3-81aa-4082bde336a4')/Items(3)/File";
};
};
FileSystemObjectType = 1;
FilterCategory = "<null>";
FirstUniqueAncestorSecurableObject = {
"__deferred" = {
uri = "https://xxxxxxx/_api/Web/Lists(guid'1594ea5e-0ca7-4de3-81aa-4082bde336a4')/Items(3)/FirstUniqueAncestorSecurableObject";
};
};
Folder = {
"__deferred" = {
uri = "https://xxxxxxx/_api/Web/Lists(guid'1594ea5e-0ca7-4de3-81aa-4082bde336a4')/Items(3)/Folder";
};
};
GUID = "28144fd4-84b0-434b-9e99-01d939e6a773";
Has20likes = "<null>";
ID = 3;
Id = 3;
IsFeatured = 0;
IsIdeaCreated = "<null>";
IsQuestion = 0;
LastReplyById = 49;
LikesCount = 5;
MemberLookupId = 7;
Modified = "2015-03-11T15:25:20Z";
"OData__UIVersionString" = "2.0";
ParentItemEditorId = "<null>";
ParentItemID = "<null>";
ParentList = {
"__deferred" = {
uri = "https://xxxxxxx/_api/Web/Lists(guid'1594ea5e-0ca7-4de3-81aa-4082bde336a4')/Items(3)/ParentList";
};
};
Popularity = "7.23632608186099";
RatingCount = "<null>";
RoleAssignments = {
"__deferred" = {
uri = "https://xxxxxxx/_api/Web/Lists(guid'1594ea5e-0ca7-4de3-81aa-4082bde336a4')/Items(3)/RoleAssignments";
};
};
StepChangePillar = "<null>";
Title = "JIRA Governance";
"__metadata" = {
etag = "\"14\"";
id = "Web/Lists(guid'1594ea5e-0ca7-4de3-81aa-4082bde336a4')/Items(3)";
type = "SP.Data.Community_x0020_DiscussionListItem";
uri = "https://xxxxxxx/_api/Web/Lists(guid'1594ea5e-0ca7-4de3-81aa-4082bde336a4')/Items(3)";
};
},
Thanks
You should have an array of dictionaries correct?
If so this should work:
NSInteger index = 0; //You can set this to the current page of your scroll view
NSArray * items = /* YOUR ARRAY OF DICTIONARIES */;
NSDictionary * dict = [items objectAtIndex:index];
NSString * title = [dict objectForKey:#"Title"];
You might also consider making a subclass of NSObject and building in a parser for your dictionary so you can access the variables with strong types.
This is my response API. The image data dynamically changes,with more image at a time or else no image at a time. I have check as ([image_array count]==0) but app crash due to empty array.
Error
reason: '*** -[__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
(
0 CoreFoundation 0x0243edf6 __exceptionPreprocess + 182
API RESPONSE
{
response = {
Details = {
ID = 4;
address = "";
ancestors = (
);
"comment_count" = 0;
"comment_status" = closed;
description = "";
"description_pt" = "";
duration = 2;
"event_address" = "";
"event_location" = ",";
"event_location_option" = "";
"event_place_address" = "";
"event_place_email" = "";
"event_place_location" = "";
"event_place_phone" = "";
"event_place_website" = "";
filter = raw;
guid = "";
images = (
);
"like_count" = 0;
"like_status" = FALSE;
location = "";
"menu_order" = 0;
"ping_status" = closed;
pinged = "";
"place_event_count" = "";
"place_event_id" = "";
"place_id" = "";
"post_author" = 5;
"post_category" = (
);
"post_content" = "";
"post_content_filtered" = "";
"post_date" = "2015-07-31 ";
"post_date_gmt" = "2015-07-31 ";
"post_excerpt" = "";
"post_mime_type" = "";
"post_modified" = "2015-07-31 ";
"post_modified_gmt" = "2015-07-31 ";
"post_name" = 48;
"post_parent" = 0;
"post_password" = "";
"post_status" = publish;
"post_title" = "";
"post_type" = events;
"tags_input" = (
);
time = "17:50:30";
title = "";
"title_pt" = "";
"to_ping" = "";
video = "";
website = "";
};
Message = "Post Details";
httpCode = 10;
};
}
check like this
NSArray *array = [data valueForKey#"images"];
if (![array isKindOfClass:[NSArray class]]) {
//its not array or have null value
}else{
//its real array
}
It will work fine
I have Json object like this :
{
CO = 1;
CUABR = "<null>";
CUNO = "<null>";
DIV = 2;
DLDAT = 1020923;
SALID = "<null>";
"form_number" = MM23000;
type = VHNO;
},
{
CO = 1;
CUABR = "<null>";
CUNO = "<null>";
DIV = 2;
DLDAT = 1020923;
SALID = "<null>";
"form_number" = MM23001;
type = VHNO;
},
{
CO = 1;
CUABR = "<null>";
CUNO = "<null>";
DIV = 2;
DLDAT = 1020924;
SALID = "<null>";
"form_number" = MM23002;
type = VHNO;
},
{
CO = 1;
CUABR = "\U53f0\U5316\U65b0\U6e2f";
CUNO = FCFC3;
DIV = 2;
DLDAT = 1020924;
SALID = M;
"form_number" = MM23003;
type = VHNO;
}
}
then I need to remove json array content null dictionary key value to sort like this:
{
CO = 1;
CUABR = "\U53f0\U5316\U65b0\U6e2f";
CUNO = FCFC3;
DIV = 2;
DLDAT = 1020924;
SALID = M;
"form_number" = MM23003;
type = VHNO;
}
}
How should I do?
I would like to know the proper way, should I use nest loop or block?
Thanks for helping.
use this may help you..
NSMutableArray *newarray=[NSMutableArray array];
for (NSDictionary *dictionary in parseArrray)
{
if (dictionary[key] != [NSNull null]) {
[newarray addObject:dictionary];
}
}