๋ฌธ์ ์ํฉ
- AED API์ ์์ฒญ ๋ณ์์ ์๋ ๊ฒฝ๋ ๊ฐ์ด ์กด์ฌ ํ์ง ์์์
๋ฐ๊ฒฝ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํจ
๋ฌธ์ ํด๊ฒฐ
ํด๊ฒฐ๋ฐฉ์ ๋ ผ์
- 1์ : ๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ์ ์์ฒญ๋ณ์ ์ถ๊ฐ ์์ฒญํ๊ธฐ
- 2์ : ์ฑ ์ต์ด ์คํ ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ UserDefaults์ ์ ์ฅํด์ ์๊ฒฝ๋ ๊ฐ ํํฐ๋ง ํด์ ๊ฐ์ ธ์ค๊ธฐ
๋ ผ์ ๊ณผ์
[ETC] : AED๋ฐ์ดํฐ ๊ด๋ จ · Issue #56 · Kim-Dong-Hyeon/Duriso
์ด๋ค ๋ฌธ์ ์ธ๊ฐ์? aed api ์์ฒญ๋ณ์์ ์๊ฒฝ๋ ๊ฐ์ ์ง์ ํด์ฃผ๋ ์์ฒญ๋ณ์๊ฐ ์๋ค๋ณด๋ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ ๊ฑฐ๊ธฐ์ ๊ฐ์์ฑ ์กฐ์จ์ ํ๊ธฐ์๋ ๋ฐ์ดํฐ๊ฐ ๋๋ฌด ๋ง์๋ฐ ์ด๋ป๊ฒ ํ๋ฉด ์ข์๊น์? ์๊ฐํ
github.com
- github issue๋ก ๋ฑ๋กํ์ฌ ๋ ผ์ ๋ฐ ์คํฌ๋ผ ์๊ฐ ๋ ผ์ ํตํด 1์ ์ ์ฒญ, 2์์ผ๋ก ์งํ ํ ํ api ์์ ์์ฒญ์ด ๋ฐ์๋ ํ apiํธ์ถ๋ก ๋ณ๊ฒฝ ํ๊ธฐ๋ก ํจ
ํด๊ฒฐ๊ณผ์
- ์ฌ๋์์ ๊ณต๊ณต๋ฐ์ดํฐ ๊ณต์ ํ๋ซํผ ๋ฌธ์(9์ 11์ผ)
- API ์ ์ฒด ๋ฐ์ดํฐ UserDefaults์ ์ ์ฅํ๊ธฐ
- UserDefaults์์ AED ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๊ณ , ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ๋ก๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ, ๋ฐ์ดํฐ๊ฐ ์์ ๊ฒฝ์ฐ, ๋คํธ์ํฌ ์์ฒญ์ ํตํด ์ ์ฒด ๋ฒ์์ AED ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ UserDefaults์ ์ ์ฅํ ํ, ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋๋ก ๊ตฌํํจ
- UserDefaults ์ฌ์ฉํ ์ฝ๋
- UserDefaults์์ AED ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๊ณ , ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ๋ก๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ, ๋ฐ์ดํฐ๊ฐ ์์ ๊ฒฝ์ฐ, ๋คํธ์ํฌ ์์ฒญ์ ํตํด ์ ์ฒด ๋ฒ์์ AED ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ UserDefaults์ ์ ์ฅํ ํ, ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋๋ก ๊ตฌํํจ
// MARK: - ์ ์ฒด AED ๋ฐ์ดํฐ ์์ฒญ ๋ฐ UserDefaults์ ์ ์ฅ
func fetchAllAeds() -> Observable<AedResponse> {
// UserDefaults์์ ๋ฐ์ดํฐ ๋ก๋
if let storedAeds = loadAeds() {
return Observable.just(storedAeds)
}
// ์ ์ญ ๋ฒ์๋ก ๋ฐ์ดํฐ ์์ฒญ
let boundingBox = (startLat: -90.0, endLat: 90.0, startLot: -180.0, endLot: 180.0)
return Observable.create { observer in
self.aedNetworkManager.fetchAllAeds(boundingBox: boundingBox)
.subscribe(onNext: { response in
// UserDefaults์ ์ ์ฅ
if let data = try? JSONEncoder().encode(response) {
UserDefaults.standard.set(data, forKey: "AedData")
print("์ ์ฒด AED ๋ฐ์ดํฐ๊ฐ UserDefaults์ ์ ์ฅ๋์์ต๋๋ค.")
}
observer.onNext(response)
observer.onCompleted()
}, onError: { error in
observer.onError(error)
})
.disposed(by: self.disposeBag)
return Disposables.create()
}
}
// MARK: - UserDefaults์์ AED ๋ฐ์ดํฐ ๋ก๋
func loadAeds() -> AedResponse? {
if let data = UserDefaults.standard.data(forKey: "AedData"),
let aedResponse = try? JSONDecoder().decode(AedResponse.self, from: data) {
return aedResponse
}
return nil
}
- ์ด ๊ณผ์ ์์ RxSwift์ Observable์ ์ฌ์ฉํด ๋น๋๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ , ๋คํธ์ํฌ ์์ฒญ ๋ฐ ์๋ฌ ์ฒ๋ฆฌ ๋ํ RxSwift๋ก ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค.
- RxSwift๋ก ๊ด๋ฆฌํ ์ด์
- ์ฌ์ฉ์๊ฐ ์ง๋ ์์น๋ฅผ ๋ณ๋ํ์ฌ ์ ๋ณด๋ฅผ ์์ฒญ ํ ๋๋ง๋ค ๋ฐ์ดํฐ ์์ฒญ์ด ๋ฐ์ํ๊ณ , ์ด๋ฅผ ์ฌ๋ฌ ๋ฒ ์ฒ๋ฆฌํ๊ฑฐ๋, ์์ฒญ ํ UI ์ ๋ฐ์ดํธ๋ฅผ ์ํํด์ผ ํด์, RxSwift๋ฅผ ์ฌ์ฉํด ๋ณต์กํ ํ๋ฆ์ ํ๋์ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ผ๋ก ์ฒ๋ฆฌํด ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์์ผฐ์ต๋๋ค
- UserDefaults๋ก ์ฒ๋ฆฌ์ค ๋ฐ์ดํฐ ์ฉ๋ ํฌ๊ธฐ ๋ฌธ์ ๋ฐ์..
- UserDefaults ๋๋ฒ๊น ๋ก๊ทธ
CFPrefsPlistSource<0x600003004a20>
(Domain: com.donghyeon.Duriso, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null),
Contents Need Refresh: Yes): Attempting to store >= 4194304 bytes of data in CFPreferences/NSUserDefaults on this platform is invalid. This is a bug in Duriso or a library it uses.
Description of keys being set:
autoLogin: boolean value
Description of keys already present:
AedData: data value, size: 8080715
VersionOfLastRun: string value, approximate encoded size: 1
autoLogin: boolean value
- ์คํ๋ผ์ธ ๋งต์ AED ๋ฐ์ดํฐ ์ฌ์ฉ ์ํด ์์ ํด๋ FireBase, CoreData ํ์ฉํ์ฌ ๊ตฌํ ํ๋๋ก ๋ณ๊ฒฝ ์์
- ์ฌ๋์์ ๊ณต๊ณต๋ฐ์ดํฐ ํ๋ซํผ ๋ฌธ์ ๋ฐ์ ๋จ!!
- 9์ 27์ผ ๋น ๋ฅธ์์ผ ๋ด์ ๋ฐ์ํ ์ ์๋๋ก ํ๊ฒ ๋ค๋ ๋ต๋ณ ๋ฐ์
- 9์ 27์ผ ๋น ๋ฅธ์์ผ ๋ด์ ๋ฐ์ํ ์ ์๋๋ก ํ๊ฒ ๋ค๋ ๋ต๋ณ ๋ฐ์
- ๋ฐ์ ๋ ์์ฒญ ๋ณ์
๊ฒฐ๊ณผ ๋ฐ ํ๋ก์ ํธ ๋ฐ์ / ์ฐจ์ ์ฑ
ver 1.0.0 ์๋ UserDefaults๋ก ๋ฐฐํฌ
- ๋ฐ์ดํฐ ์ฉ๋์๋ฌ ๋ก๊ทธ ๋ฐ์ํ์ง๋ง ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๋ ๊ฒ์์๋ ๋ฌธ์ ์๋ ๊ฒ ํ์ธ ์๋ฃ
- ์ถํ ๋ฐฐํฌ์ ๋ณ๊ฒฝ๋ ์์ฒญ๋ณ์๋ก api ์์ฒญ ์ํด ์์ ์ค
728x90
'iOS_Developer > Team Project' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TeamProject] Troubleshooting_POI show/hide (0) | 2024.09.09 |
---|---|
[TeamProject] CodeBase ์นด์นด์ค๋งต _ ๊ธฐ์ด๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ (1) | 2024.09.06 |
[TeamProject] troubleshooting_kakaomap๊ด๋ จ (4) | 2024.09.03 |
on / off ํ ๊ธ ๋ฒํผ ๋ง๋ค๊ธฐ (0) | 2024.08.28 |
[ TeamProject ] ํ๋ก์ ํธ ์ค๋น _ ์นด์นด์ค๋งต api ๊ณต๋ถํ๊ธฐ! (8) | 2024.08.25 |