2015-05-29 18 views
7

Tôi đang cố gắng viết một vài cookie trong Swift để khi tôi hiển thị một webview, nó sẽ có thể đọc các cookie đó và phản ứng một cách thích hợp. Tôi tìm thấy nhiều ví dụ về cách tạo cookie và đọc tài liệu của Apple nhưng dường như tôi không thể nhận được đối tượng NSHTTPCookie hợp lệ. Nó luôn luôn là không.Swift - NSHTTPCookie là nil

Dưới đây là mã của tôi:

let baseHost = "domain.com" 
let oneYearInSeconds = NSTimeInterval(60 * 60 * 24 * 365) 

func setCookie(key: String, value: AnyObject) { 
    var cookieProps = [ 
     NSHTTPCookieOriginURL: baseHost, 
     NSHTTPCookiePath: "/", 
     NSHTTPCookieName: key, 
     NSHTTPCookieValue: value, 
     NSHTTPCookieSecure: "TRUE", 
     NSHTTPCookieExpires: NSDate(timeIntervalSinceNow: oneYearInSeconds) 
    ] 

    var cookie = NSHTTPCookie(properties: cookieProps) 
    // This line fails due to the nil cookie 
    NSHTTPCookieStorage.sharedHTTPCookieStorage().setCookie(cookie!) 
} 

biến cookie tôi là nil. Tôi đã thử nhiều kết hợp thuộc tính bao gồm cả hai số NSHTTPCookieOriginURLNSHTTPCookieDomain, có và không có NSHTTPCookieSecure và thậm chí không có NSHTTPCookieExpires. Luôn luôn nil.

Có ai có ý tưởng gì tôi đang làm sai không?

Trả lời

9

Tôi tin rằng vấn đề là bạn muốn sử dụng NSHTTTPCookieDomain, KHÔNG NSHTTPCookieOriginURL.

Bạn có thể thử các tính chất như vậy:

var cookieProps = [ 
     NSHTTPCookieDomain: baseHost, 
     NSHTTPCookiePath: "/", 
     NSHTTPCookieName: key, 
     NSHTTPCookieValue: value, 
     NSHTTPCookieSecure: "TRUE", 
     NSHTTPCookieExpires: NSDate(timeIntervalSinceNow: oneYearInSeconds) 
    ] 

Nếu bạn không cung cấp tính hợp lệ để các nhà xây dựng, bạn sẽ nhận được một giá trị null. Bạn nên cung cấp boolean cho NSHTTPCookieSecure, không phải là một chuỗi.

+0

Wow. Tôi đã SURE Tôi đã cố gắng đó nhưng rõ ràng là tôi đã không. Điều đó đã hiệu quả! Tôi phải đợi 8 phút trước khi tôi có thể chấp nhận câu trả lời của bạn. Tôi sẽ quay lại để làm điều đó sau. – ShatyUT

+1

FYI, mã nguồn cho NSHTTPCookieSecure nói rằng nó phải là "TRUE" hoặc "FALSE": 'Chuỗi chỉ định liệu cookie có được truyền chỉ qua các kênh bảo mật hay không. Giá trị chuỗi phải là "TRUE" hoặc "FALSE". Mặc định là "FALSE". '. Tôi thấy một vị trí khác cho biết BẤT K value giá trị ngụ ý đúng. – ShatyUT

Các vấn đề liên quan