2016-05-31 11 views
0

Ich erstelle einen Cookie mit NSHTTPCookie. Aber wenn ich das Ablaufdatum erstelle, wird es zum Erstellungsdatum konvertiert. Hier ist mein Code:NSHTTPCookie: expiresDate ist immer null

NSMutableDictionary *cProperties = [NSMutableDictionary dictionary]; 

    [cProperties setObject:@"31 May 2016 17:04:14 GMT" forKey:NSHTTPCookieExpires]; 
    NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:]; 
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie]; 

Pro Konsole Ausgabe:

<NSHTTPCookie version:0 name:"myCookie" 
expiresDate:(null) created:2016-05-31 16:32:37 +0000 
sessionOnly:TRUE path:"/" isSecure:TRUE> 

Jeder von euch weiß, warum mein expiresDate wird immer Schalter mit Erstellungsdatum?

Ich werde Ihre Hilfe wirklich zu schätzen wissen.

Antwort

2

Sie übergeben die Eigenschaften nicht an den Cookie. Sie wollen:

NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cProperties]; 
                  ^^^^^^^^^^^ 

Auch ist es wahrscheinlich einfacher, um das Datum/Zeit mit einem NSDate Objekt anstelle eines NSString abläuft.

0

NSHTTPCookieExpires erwartet NSDate als Werttyp, basierend auf Apple's document So müssen Sie NSDate Typ Wert wie [NSDate dateWithTimeIntervalSinceNow:60*60] einstellen NSHTTPCookieExpires Schlüssel

+0

Die [Dokumentation] (https://developer.apple.com/ verwenden library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSHTTPCookie_Class/# // apple_ref/doc/constant_group/HTTP_Cookie_Attribute_Keys) sagt, dass es entweder "NSDate" oder "NSString" akzeptiert, wenn es über die Eigenschaften festgelegt wird. Ich stimme zu, dass es besser ist, 'NSDate' zu ​​verwenden. – trojanfoe

+0

@trojanfoe ja, du hast Recht. NSString ist akzeptabel. Ich denke, das Problem ist das Format des NSString, es muss etwas wie "2016-06-01 23:50:39 +0000" sein, folgen Sie dem NSDate oder schauen Sie sich den Wert für "erstellt" an. – riowww