VHBoomMenuButton icon indicating copy to clipboard operation
VHBoomMenuButton copied to clipboard

crash issue in Xcode 10

Open mouli457 opened this issue 6 years ago • 5 comments

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!")

mouli457 avatar Oct 16 '18 12:10 mouli457

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.

krzysztof-osiecki avatar Nov 06 '18 07:11 krzysztof-osiecki

I had upload issue in Xcode 9,Can you please resolve issue this issue in Xcode 10

mouli457 avatar Dec 20 '18 06:12 mouli457

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:

salvasp avatar Jan 10 '19 11:01 salvasp

@Nightonke i m also facing this issue! need help!

AzimJavaidKhan avatar Jan 10 '19 11:01 AzimJavaidKhan

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

dariolr avatar Mar 06 '19 16:03 dariolr