VHBoomMenuButton
VHBoomMenuButton copied to clipboard
crash issue in Xcode 10
I updated my Xcode9 to xcode10, My app is crashing when I tap on button.
App is crashing here
assert(bmb.buttonEnum != .unknown, "[BMB] Unknown button enum!") assert(bmb.piecePlaceEnum.rawValue < PiecePlaceEnum.count, "[BMB] Unknown piece-place-enum!") assert(bmb.buttonPlaceEnum.rawValue < ButtonPlaceEnum.count, "[BMB] Unknown button-place-enum!") assert(bmb.boomEnum.rawValue < BoomEnum.count, "[BMB] Unknown boom-enum!") assert(builders.count > 0, "[BMB] Empty builders!")
The problem is in: https://github.com/Nightonke/VHBoomMenuButton/blob/master/VHBoomMenuButtonSwift/BoomMenuButton/Piece/PiecePlaceEnum.swift
public static var count: Int {
return PiecePlaceEnum.custom.hashValue + 1
}
this method should read:
public static var count: Int {
return PiecePlaceEnum.custom.rawValue + 1
}
Fix is quick, would be nice to apply it. For now we are forced to use obcj version.
I had upload issue in Xcode 9,Can you please resolve issue this issue in Xcode 10
the enums are changed with Swift 4.2
You should completely delete
public static var count: Int
and declare
public enum PiecePlaceEnum: Int, CaseIterable
then use
PiecePlaceEnum.allCases.count
for the count
Note if you have used hash value for the index of the element of the enum:
the hashValue is also changed now is an actual hash calculated consistently with the type. For a String enum you can use something like
enum StringEnum: String, CaseIterable
and inside the enum declare
var ordinal: Int {
//force unwrap does not give problems because index of self always exist
//index(of: self) does not shows in Autocomplete, it will suggest firstIndex(of:)
//for the enum you can use what you prefer
return StringEnum.allCases.index(of: self)!
}
then replace . hashValue with .ordinal I named it ordinal because by convention is so called in Java
and in code
let position: Int = StringEnum.aCase.ordinal
or if you don't prefer to add the variable to the enum
let position: Int = StringEnum.allCases.index(of: StringEnum.aCase)!
PS There is duplicate case in ButtonPlaceManager case .vertical, .ham_1, .ham_2, .ham_3, .ham_3, .ham_4, .ham_5, .ham_6:
@Nightonke i m also facing this issue! need help!
try objc pod in your swift project.
pros: no error, everything works as expected ( swift 4.2, Xcode 10.1 )
cons: you need to rename all reference class