标签: nsdictionary

将nil对象插入NSDictionary

如果我们的API只需要对象中的2个属性,并且iPhone应用程序不要求它们实例化对象,则当对象在参数NSDicitionary中使用时,应用程序将崩溃.我被告知NSDictionary不会让你分配nil值,因为当它达到nil时它会认为它已经完成了.objective-c是否有办法将对象非零属性吐出到NSDictionary中?

例:

[Drunk alloc] init];
drunk.started_drinking = [NSDate date];
drunk.stopped_drinking (we don't set this because he is still a drunk)
drunk.fat = YES;
drunk.dumb = YES;


parameters:@{

             @"auth_token" :token,
             @"name" : drunk.name, @"date_started" : drunk.started_drinking,
             @"date_stopped" : drunk.stopped_drinking, 
             @"prescribing_doctor" : drunk.fat,
             @"pharmacy" : drunk.dumb

            }
Run Code Online (Sandbox Code Playgroud)

当它到达stopped_drinking属性时会崩溃.有关如何处理这个的任何建议?

objective-c nsdictionary

23
推荐指数
2
解决办法
2万
查看次数

Swift - 如何遍历NSDictionary

嗨,我正在学习Swift,我想从JSON Api中提取数据,我的Swift代码看起来像这样.具体来说,我需要提取每个键及其值,(例如:打印标题值,封面等).

//Json request
var error: NSError?
var raw = NSString.stringWithString("http://example.com/MovieAPI/api/v1/movies/")
var api_url = NSURL.URLWithString(raw)
let jsonData: NSData = NSData.dataWithContentsOfURL(api_url, options: nil, error: &error)
let result = NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &error)
as NSDictionary
for val in result {
   for (var i=0; i < val.value.count; i++){
       //println(val.value.valueAtIndex(3)) Not Working
   }
}
Run Code Online (Sandbox Code Playgroud)

而我的JSON的结构是

{
  data: [
      {
        id: 2,
        title: "Hunger Games",
        cover: "http://example.com",
        genre: 2
       }
  ]
}
Run Code Online (Sandbox Code Playgroud)

救命!

json nsdictionary ios swift

23
推荐指数
1
解决办法
4万
查看次数

Swift中NSDictionary与Dictionary有什么区别?

我正在学习斯威夫特,我可以看到Dictionary它.
但是有很多NSDictionary与Swift 一起使用的例子.
这两者有什么区别?
我想在Swift中使用带有索引的数组,就像PHP中的数组一样.
哪一个更好用?

arrays dictionary nsdictionary swift

23
推荐指数
2
解决办法
1万
查看次数

NSDictionary:仅为抽象类定义的方法.我的应用程序崩溃了

我调用addImageToQueue后,我的应用程序崩溃了.我添加了initWithObjects:forKeys:count:但它没有帮助我.

Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '*** -[NSDictionary initWithObjects:forKeys:count:]: 
method only defined for abstract class.  
Define -[DictionaryWithTag initWithObjects:forKeys:count:]!'
Run Code Online (Sandbox Code Playgroud)

我的代码

- (void)addImageToQueue:(NSDictionary *)dict
{
 DictionaryWithTag *dictTag = [DictionaryWithTag dictionaryWithDictionary:dict];
}

@interface DictionaryWithTag : NSDictionary
@property (nonatomic, assign) int tag;

- (id)initWithObjects:(id *)objects forKeys:(id *)keys count:(NSUInteger)count;

@end

@implementation DictionaryWithTag

@synthesize tag;

- (id)initWithObjects:(id *)objects forKeys:(id *)keys count:(NSUInteger)count
{
 return [super initWithObjects:objects forKeys:keys count:count];
}
@end
Run Code Online (Sandbox Code Playgroud)

crash nsdictionary ios

22
推荐指数
2
解决办法
1万
查看次数

如何在iOS中正确地将NSDictionary转换为json格式?

我正在尝试向我的服务器发送一个json文件.json格式应该看起来像这样:

{
    "eventData": {
        "eventDate": "Jun 13, 2012 12:00:00 AM",
        "eventLocation": {
            "latitude": 43.93838383,
            "longitude": -3.46
        },
        "text": "hjhj",
        "imageData": "raw data",
        "imageFormat": "JPEG",
        "expirationTime": 1339538400000
    },
    "type": "ELDIARIOMONTANES",
    "title": "accIDENTE"
}
Run Code Online (Sandbox Code Playgroud)

我硬编码了这个并且像这样工作:

NSString *jsonString = @"{\"eventData\":{\"eventDate\":\"Jun 13, 2012 12:00:00 AM\",\"eventLocation\":{\"latitude\":43.93838383,\"longitude\":-3.46},\"text\":\"hkhkjh\",\"imageData\":\"\",\"imageFormat\":\"JPEG\",\"expirationTime\":1339538400000},\"type\":\"Culture\",\"title\":\"accIDENTE\"}";
Run Code Online (Sandbox Code Playgroud)

所以我想做同样的事情,但使用NSDictionary原因当然我不想硬编码我的所有数据.所以我正在创建一个像这样的NSDictionary:

NSMutableDictionary *eventLocation = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"43.93838383",@"latitude",@"-3.46", @"longitude" , nil];

    NSMutableDictionary *eventData = [NSMutableDictionary dictionaryWithObjectsAndKeys:eventLocation,@"eventLocation", nil];
                        [eventData setObject:@"Jun 13, 2012 12:00:00 AM" forKey:@"eventDate"];
                        [eventData setObject:@"hjhj" forKey:@"text"];
                        [eventData setObject:@"raw data" forKey:@"imageData"];
                        [eventData setObject:@"JPEG" forKey:@"imageFormat"];
                        [eventData setObject:@"1339538400000" forKey:@"expirationTime"];

    NSMutableDictionary *finalDictionary = [NSMutableDictionary …
Run Code Online (Sandbox Code Playgroud)

format json nsdictionary ios

22
推荐指数
1
解决办法
3万
查看次数

Cocoa的NSDictionary:为什么要复制密钥?

在NS(Mutable)词典中用作键的所有对象必须支持NSCopying协议,并且这些对象在字典中使用时会被复制.

我经常想要使用较重的物体作为键,只需将一个物体映射到另一个物体.当我这样做时,我真正的意思是:

[dictionary setObject:someObject forKey:[NSValue valueWithPointer:keyObject]];
Run Code Online (Sandbox Code Playgroud)

("当我回来再次交给你这个相同的关键对象实例时,给我相同的值.")

...这正是我最终做的有时候绕过这个设计.(是的,我知道桌面Cocoa中的NSMapTable;但是iPhone不支持这个.)

但我真正得到的是为什么首先复制密钥是必要的或可取的.它是如何购买实现或调用者的?

cocoa nsdictionary nsmutabledictionary data-structures

21
推荐指数
3
解决办法
5177
查看次数

在写入文件时尝试加密NSDictionary

我目前正在iOS设备上保存一个NSDictionary文件.但是,NSDictionary文件是可读的XML.我不希望人们能够进入并阅读内容,因此我需要能够在写入时加密文件并在再次加载时解密.

我目前正在保存这样的文件:

NSFileManager* fileManager = [NSFileManager defaultManager];
if (!fileManager)
{
    NSLog(@"Failed to get file manager to save.");
    return;
}

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
NSString* filePath = [documentsDirectory stringByAppendingPathComponent:@"save.dic"];
[m_dictionary writeToFile:filePath atomically:YES];
Run Code Online (Sandbox Code Playgroud)

我正在加载这样的字典:

NSArray*  paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
NSString* filePath = [documentsDirectory stringByAppendingPathComponent:@"save.dic"];
m_dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
Run Code Online (Sandbox Code Playgroud)

谁能告诉我一个加密\解密这个的好方法?

干杯,里奇

encryption nsdictionary uikit ios

21
推荐指数
1
解决办法
7016
查看次数

关于 - (NSDictionary)dictionaryWithObjectsAndKeys:和

我有一个非常有趣的问题.

在我的一个类中,我声明了一个非常简单的实例方法 - (NSDictionary)字典; 这是以这种方式实现的:

- (NSDictionary *)dictionary {
    return [NSDictionary dictionaryWithObjectsAndKeys:
                              self.userID, @"id",
                              self.userName, @"name",
                              self.userSurname, @"sName",
                              self.userNickname, @"nName",
                              self.userPassword, @"pwd",
                              [NSNumber numberWithDouble:[self.userBirthday timeIntervalSince1970] * 1000], @"birthday",
                              self.userSex, @"sex",
                              self.userEmail, @"email",
                              self.userLanguage, @"locale",
                              [NSNumber numberWithLongLong:self.userCoin], @"coin",
                              self.userRate, @"rate",
                              [NSNumber numberWithDouble:self.userCoordinate.latitude], @"lat",
                              [NSNumber numberWithDouble:self.userCoordinate.longitude], @"lon",
                              self.userPlaces, @"userPlaces",
                              nil];
    }
Run Code Online (Sandbox Code Playgroud)

声明了这个方法,我的返回字典中没有@"userPlaces"键(self.userPlace显然是有价值的并且充满了对象).

所以我改变了一下这样的方法:

- (NSDictionary *)dictionary {      
    NSMutableDictionary *toReturn = [NSMutableDictionary dictionary];
    [toReturn setValue:self.userID forKey:@"id"];
    [toReturn setValue:self.userName forKey:@"name"];
    [toReturn setValue:self.userSurname forKey:@"sName"];
    [toReturn setValue:self.userNickname forKey:@"nName"];
    [toReturn setValue:self.userPassword forKey:@"pwd"];
    [toReturn setValue:[NSNumber numberWithDouble:[self.userBirthday timeIntervalSince1970] * …
Run Code Online (Sandbox Code Playgroud)

iphone nsdictionary foundation

21
推荐指数
2
解决办法
3万
查看次数

获取nsdictionary中特定键的值

我将json解析结果保存在以下dictionary内容中:

{
 "statusCode":"200",
"body":[
  {
     "status":"success",
     "remarks":null
  }
],

"data":[
     "abcd":[
        {
           "category":"a",
           "title":"b",
           "id":"24"
        },
        {
           "category":"c",
           "title":"crd",
           "id":"65"
        },
        {
           "category":"ds",
           "title":"sd",
           "id":"18"
        }

     ]
  },
  {
     "efgh":[
        {
           "category":"ds",
           "title":"sd",
           "id":"18"
        },
        {
           "category":"sd",
           "title":"sd",
           "id":"1"
        }

                             ]
  },
  {
     "ijkl":[
        {
           "category":"ds",
           "title":"sd",
           "id":"18"
        },
        {
           "category":"sd",
           "title":"sd",
           "id":"1"
        }

     ]
  }
 ]
}
Run Code Online (Sandbox Code Playgroud)

key @"data"的数据可以通过使用保存到数组中

NSMutableArray *getdata=[[NSMutableArray alloc]init];
getcat=[results objectForKey:@"data"];
Run Code Online (Sandbox Code Playgroud)

现在我应该为values(category, title, id)第一个索引内部做些什么,即"abcd".

如果有人有任何知识,请看看.

谢谢大家.

iphone objective-c nsdictionary ios

20
推荐指数
1
解决办法
6万
查看次数

Swift - 在Dictionary中完全更改了存储的值顺序

我试图显示字典格式的数据.下面,有三次尝试.首次尝试,输出顺序完全改变.第二次尝试,输出顺序与输入相同.但是,在第三次尝试中,我将变量声明为NSDictionary.我收到的确切输出.为什么这会改变字典?请指导我.我搜索了Swift的字典标签.但我找不到.

//First Attempt
var dict : Dictionary = ["name1" : "Loy", "name2" : "Roy"]
        println(dict)

//output:
[name2: Roy, name1: Loy]

//Second Attempt
var dict : Dictionary = ["name2" : "Loy", "name1" : "Roy"]
        println(dict)

//output:
[name2: Loy, name1: Roy]
-----------------------------------------------------------

//Third Attempt With NSDictionary
var dict : NSDictionary = ["name1" : "Loy", "name2" : "Roy"]
            println(dict)

//output:
{
    name1 = Loy;
    name2 = Roy;
}
Run Code Online (Sandbox Code Playgroud)

另一个问题:我用游戏场进行验证.我的屏幕截图如下:

play_ground_screen_shot

在这里,在NSDictionary中,我首先给了name5,但是在右边name2显示,然后,在println中,它以升序显示.为什么会这样?

play_ground_screen_shot_2

在这里,在字典中,我给了name5作为第一个,但是在右边name2正在显示,然后,在println中,它正在显示它是如何在Dictionary行上拍摄的.为什么会这样?

nsdictionary ios swift

20
推荐指数
4
解决办法
2万
查看次数