func addSongToQueue(){
let post = [
"data": [
"QueueId": MyViewState.selectedQueId,
"track":[
[
"title":selectedTrack.title,
"stream_url": selectedTrack.stream_url,
"userName" : selectedTrack.userName,
"artWorkURL": selectedTrack.artWorkURL,
"userAvatar": selectedTrack.userAvatar,
"trackID" : selectedTrack.trackID,
"duration" : selectedTrack.duration
]]]
]
跟踪获取代码:
-(instancetype) initWithDictionary: (NSDictionary*) SCTrackDict {
self = [self init];
if (self) {
self.title = SCTrackDict[@"title"];
self.stream_url = SCTrackDict[@"stream_url"];
self.userDict = SCTrackDict[@"user"];
self.userName = self.userDict[@"username"];
self.artWorkURL = SCTrackDict[@"artwork_url"];
self.trackID = SCTrackDict[@"id"];
self.userAvatar = self.userDict[@"avatar_url"];
self.duration = SCTrackDict[@"duration"];
}
return self;
}
将数据解析为曲目:
+(NSMutableArray *) parseJSONData: (NSData *) JSONData {
NSError* error;
NSMutableArray* SCTrackArray = [NSMutableArray new];
NSArray *JSONArray= [NSJSONSerialization JSONObjectWithData:JSONData options:0 error: &error];
if ([JSONArray isKindOfClass:[NSArray class]]) {
for (NSDictionary* trackDict in JSONArray) {
SCTrack* trackObject = [[SCTrack alloc]initWithDictionary:trackDict];
//Need to print out trackDict to see JSON dictionary
[SCTrackArray addObject:trackObject];
}
}
return SCTrackArray;
}
如果NSNull在那里,我如何添加“”(空字符串),并且因为它是长值而在trackid
上崩溃。
在添加dict之前,是否可以在不检查个别密钥的情况下修改此代码?
答案 0 :(得分:0)
向自己澄清:如果您期望的密钥不存在,或者[NSNull为空],或者是空字符串,或者您希望字符串等是字典,那么您想要采取什么操作?等等。
一旦您自己解释了这一点,就可以相应地编写代码。现在看来你的代码遵循规则“如果它不在那里,我会崩溃”。
答案 1 :(得分:0)
在添加对象之前,只需检查这是否为null
if(yourObject isEqual:(id)[NSNUll null])
{
// Then do nothing
}
答案 2 :(得分:-1)
您可以使用以下内容:
"stream_url": selectedTrack.stream_url != nul ? selectedTrack.stream_url : @"";
希望有所帮助。
您可以阅读三元操作