2015-11-16 31 views
-1
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上崩溃。

在添加字典之前,是否可以在不检查单个密钥的情况下修改此代码?

+0

使用TrackID可选。 – amorbytes

+0

你可以请添加代码如何使用可选? –

+0

告诉我你如何访问'trackID'的代码我会为它写代码。 – amorbytes

回答

-1

您可以使用这样的事情:

"stream_url": selectedTrack.stream_url != nul ? selectedTrack.stream_url : @""; 

希望它能帮助。

你可以阅读有关三元操作

+0

对不起,不起作用 –

+0

什么是不工作?也许你有更多的错误,而不是一个,现在它在下一个崩溃?究竟发生了什么? – gnasher729

+1

更短:selectedTrack.stream_url?:@“” – gnasher729

0

澄清自己:你要采取什么行动,如果您期望的关键不存在,或者是[NSNull空],或者是一个空字符串,或者当你期望一个字符串等时是一个字典。

一旦你向自己解释了这一点,就可以相应地编写代码。目前看来,你的代码遵循规则“如果它不在那里,我会崩溃”。

+0

[NSNull null]崩溃的应用程序 –

0

前添加对象只是检查像这样的,它是此空或不是

if(yourObject isEqual:(id)[NSNUll null]) 
{ 
    // Then do nothing 
} 
相关问题