iOS Double형 데이터를 String으로 나타내는 법(+ 소수점 표현하는 방법)

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.


문제상황

현재 서버에서는 Double형 데이터가 넘어오고 있다. > let double = 12.012312 이런식으로
근데 나는 이를 String으로 변환하면서 소수점 두 번째 자리까지만 보여주고 싶다.

추가로 뒤에 %까지 추가하고 싶다면?

let double: Double = 12.012312
var string: String

string = String(format: "%.2f", double) + "%"
print(string)
// 12.01% 출력됨

iOS Cannot assign value of type 'UIColor' to type '[NSUIColor]' (aka 'Array') 에러 해결하기

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.


Cannot assign value of type ‘UIColor’ to type ‘[NSUIColor]’ (aka ‘Array')

컬러값을 어레이에 담아서 가져오고 있는데 위와 같은 에러가 발생했다.

받아오고 있는 컬러 데이터는 아래와 같다.
["#1301239", "#123ff1", "#131942"] 이런식으로..!(안의 숫자는 그냥 임의로 적어넣은 것!)

이렇게 어레이에 담겨져 있는 스트링 값들을 UIColor로 변환하고 싶은데 어떻게 해야할까?

let color = ["#1301239", "#123ff1", "#131942"]
let hexColor = [NSUIColor(cgColor: UIColor(hexString: color).cgColor)]

이렇게 해주면 간단하게 완료우~!

UIColor Extension 이 궁금하다면 > 요기 클릭

iOS Convert UIColor to String(+# 제거하기!)

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.


Convert UIColor to String

서버에서 컬러값을 받아오고 있는데 "#293949"이런식으로 받아오고 있었다.
즉 여기서 필요한건 해당 스트링에서 #을 제거하고 UIColor 값으로 바꿔줘야 하는 것!

UIColor를 extension해주자. 추가한 뒤 아래 코드 복붙
해당 방법은 되게 다양할텐데 나는 현재 이렇게 써주고 있다.

import Foundation
import UIKit

extension UIColor {

  convenience init(hexString: String) {

      let hex = hexString.trimmingCharacters(in: CharacterSet.alphanumerics.inverted)

      var int = UInt64()
      Scanner(string: hex).scanHexInt64(&int)
      let a, r, g, b: UInt64

      switch hex.count {
      case 3:
          (a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17)
      case 6:
          (a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF)
      case 8:
          (a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF)
      default:
          (a, r, g, b) = (255, 0, 0, 0)
      }

      self.init(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: CGFloat(a) / 255)
  }
}

iOS Firebase 8.8.0으로 업그레이드하면서 수정할 것들

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.


Firebase 8.8.0 업그레이드

Firebase를 7.10.0 에서 8.8.0으로 업그레이드 하였습니다.
코코아팟을 사용했구요.

pod 'Firebase', '8.8.0'
pod 'Firebase/Core'
pod 'Firebase/Auth'
pod 'Firebase/Messaging'
pod 'Firebase/Analytics'
pod 'Firebase/Performance'
pod 'Firebase/Crashlytics'

했더니 아래와 같은 두개의 에러가 발생하였습니다.

  • ld: framework not found FirebaseInstanceID
  • ld: framework not found Protobuf

1. ld: framework not found FirebaseInstanceID

참고한 Stackoverflow

Target > BuildSetting > 서치박스에서 FirebaseInstanceID 검색

Linking에 FirebaseInstanceID가 있을 것

Linking > Other Linker Flags > Debug/Release 두개 모두에서 -framework, FirebaseInstanceID delete(-) 클릭

반드시 Debug/Release 두개 모두에서 삭제해줘야하고

-framework, FirebaseInstanceID 이 두개도 반드시 지워줘야 함

2. ld: framework not found Protobuf

참고한 Stackoverflow  이 또한 위에 FirebaseInstanceID를 삭제해주는 방식과 동일하게 처리해주면 끝!

iOS Facebook SDK 12.2.1 로 업그레이드하면서 수정할 것들

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.


FBSDK 12.2.1 업그레이드

참고한 깃헙은 요것입니다 > 참고 Github

FBSDK를 9.1.0 에서 12.2.1 로 업그레이드 하였습니다.
코코아팟을 사용했구요.

pod 'FBSDKShareKit', '12.2.1'
pod 'FBSDKCoreKit', '12.2.1'
pod 'FBSDKLoginKit', '12.2.1'

1. Incorrect argument label in call (have ‘fromViewController:content:delegate:’, expected ‘viewController:content:delegate:’)

친절하게도 이 에러에서는 대체해야할 문구를 바로 알려주었다.

Replace 'fromViewController' with 'viewController'

2. Instance member ‘activateApp’ cannot be used on type ‘AppEvents’; did you mean to use a value of this type instead?

AppEvents.activateApp()  // 구버전
AppEvents.shared.activateApp()  // 요렇게 바꿔주기

3. Extra argument ‘completionHandler’ in call

GraphRequest.start(completionHandler:) 요게 GraphRequest.start(completion:) 이렇게 바뀌었다고 한다.