2017-02-24 63 views
0

我无法在目标c中创建字典。我得到的警告,无法在目标c中创建字典?

不兼容的整数指针转换发送到NSInteger的参数

下面是我的代码。

NSString *tmpSessionID = [[[AppSettings sharedAppSettings] getUserSession] objectForKey:@"UserSessionId"]; 
    int tmpRepoId = [[[[AppSettings sharedAppSettings] getUserRepository] objectForKey:@"RepositoryId" ]intValue]; 
    int tmpUserID = [[[[AppSettings sharedAppSettings] getUserSession] objectForKey:@"UserId"]intValue]; 
    NSDictionary * fmDic = [[AppSettings sharedAppSettings] getFolderModel]; 
    int containerId = containerId = [[fmDic objectForKey:@"ContainerId"]intValue]; 
    int docTypeId = selectedDcoumentType.docTypeId; 
    NSDictionary *metaData = [[NSDictionary alloc] initWithObjectsAndKeys: 
         selectFileIndices.columnId, @"ColumnId", 
         indexValue, @"Value", 
         nil]; 
    NSMutableArray *metaArray = [[NSMutableArray alloc]init]; 
    [metaArray addObject:metaData]; 
    NSDictionary *metaDataFiellds = [[NSDictionary alloc] initWithObjectsAndKeys: 
            metaArray, @"metaDataFields", 
            nil]; 

    NSDictionary *allImportDict = [[NSDictionary alloc] initWithObjectsAndKeys: 
          containerId, @"containerId", 
          docTypeId, @"docTypeId",selectFileIndices.transText, @"fileExt",metaDataFiellds, @"metaDataFields",tmpRepoId, @"repositoryId",1, @"pagesCount", 
           tmpSessionID, @"sessionId", @"1487918350642.jpg", @"title",guid, @"tmpFileName",tmpUserID, @"userId", 
          nil]; 
    NSLog(@"dictionary is %@",allImportDict); 

我想创建一个JSON象下面这样:

{ 
    "containerId": 2, 
    "docTypeId": 1, 
    "fileExt": ".jpg", 
    "metaDataFields": [ 
    { 
     "ColumnId": 1, 
     "Value": "23" 
    } 
    ], 
    "pagesCount": 1, 
    "repositoryId": 1, 
    "sessionId": "1587c3c9-f261-4749-ace4-c134d031ec38", 
    "title": "1487918350642.jpg", 
    "tmpFileName": "5f8a0340-bd65-476c-b377-67fa19121203", 
    "userId": 5 
} 
+1

哪条线你得到了错误 – iOS

+4

NSDictionary不能存储标量值(比如BOOL,NSInteger等),它只能存储对象。你必须将你的标量值封装到NSNumber中才能存储它们:[NSNumber numberWithInteger containerId] – iOS

+0

你知道没有人像现在这样写Objective-C。你听说过字典文字或下标访问吗? – deadbeef

回答

1

的NSDictionary只接受对象,没有基本类型。你需要换你INT一个NSNumber

[NSNumber numberWithInt:tmpRepoId]

,或者在现代的OBJ-C:

@(tmpRepoId)

这添加到字典中。

一般情况下,我想推荐使用现代的OBJ-C为更好的可读性,例如:

int containerId fmDic[@"ContainerId"].intValue; 
NSDictionary *metaDataFiellds = @{ @"metaDataFields" : metaArray }; 

还要考虑使用的不是int NSInteger的。