나는 이상한 곳에서 튀어 나오는 이상한 버그가 있습니다. 나는 거의 내 애플 리케이션과 함께 다 끝났어 그리고 그것을 테스트하고 데이터가 업데이 트되지 않는 것으로 나타났습니다. 데이터베이스가 업데이트되고 URL을 직접 치고 데이터가 서버에서 올바르게 반환되는지 확인할 수 있지만 Swift에서 데이터를 인쇄하면 변경되지 않습니다. 나는 응용 프로그램을 다시 실행하면HTTP Get 요청이 Swift에서 캐시되지 않도록하려면 어떻게합니까?
은 내가 Alamofire을 사용하고
(대부분의 시간)을 변경하지만 나는 또한 다른 두 가지 방법을 시도했다 :
let url = NSURL(string: "http://www.stackoverflow.com")
let request = NSURLRequest(URL: url!)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
}
및
let url = NSURL(string: "http://www.stackoverflow.com")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
}
task.resume()
을
모두 3 동일한 데이터를 인쇄합니다.
스위프트의 캐싱 문제라고 생각하지만 스위프트에 데이터를 캐시하도록 설정하지 않았으며 지난 몇 주 동안 정상적으로 작동했습니다.
오늘 제가 한 것은 프로젝트에 대한 Git repo입니다.
누군가이 문제를 일으킬 수있는 아이디어가 있습니까?
* 편집 : 추가
NSURLConnectionDelegate
대리인에 부합하는: 다음
func connection(connection: NSURLConnection, willCacheResponse cachedResponse: NSCachedURLResponse) -> NSCachedURLResponse?
{
return nil // never cache anything. ever.
}
과를 만들기 위해이 시도 I Abhi 베커의 답변을 사용
전화 :
let url:NSURL! = NSURL(string: "http://coffee.datausadev.com/api/getCoffeeBrands")
let request = NSURLRequest(URL: url, cachePolicy: .ReloadIgnoringLocalCacheData, timeoutInterval: 60)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
}
이 방법은 여전히 작동하지 않았습니다.
저는 임시 구성을 사용하고 다운로드를 마친 후 세션을 무효화하여 NSUrlSession (iOS7에서 도입 됨)을 사용할 때 위의 사항을 수행 할 수 있다고 확신합니다 (Apple docs에 따라 캐시를 지울 예정 임) – joakim
" 클래스에는 currentConnection이라는 멤버가 없습니다. "내가 시도한 것을 보여주기 위해 내 게시물을 편집했습니다. 그래도 여전히 작동하지 않았다. – Kolby
@Kolby currentConnection 클래스에 인스턴스 변수가 있어야합니다. NSURLConnection 사용법에 대한 Apple의 문서를 읽으십시오. 모든 코드가 있습니다. 캐싱과 관련된 부분 만 게시했습니다. –