madebybowtie / FlagKit

Beautiful flag icons for usage in apps and on the web.
MIT License
3.04k stars 324 forks source link

Can't use FlagKit in Objective-C project #57

Closed edwardmp closed 4 years ago

edwardmp commented 6 years ago

Hi,

Maybe there's something else going on here, but somehow I can't use FlagKit anymore in my Objective-C project.

Using [[FKFlag alloc] initWithCountryCode:@"FLAGKIT"] leads to a compiler error claiming that FKFlag does not have any initWithCountryCode initializer.

Is anyone else experiencing the same issue?

blommegard commented 6 years ago

Hi!

Do you use Cocoapods or Carthage? Would you mind trying out the master branch before I make a release?

edwardmp commented 6 years ago

CocoaPods. I see your commits, might indeed be related to Swift 4 compatibility. Will check out the master branch and report back shortly, thanks!

blommegard commented 6 years ago

@edwardmp How did this go? :)

skparticles commented 6 years ago

Yes. This issue still there. @objc is missing the respective function. @objc public init?(countryCode: String) {

blommegard commented 5 years ago

The generated FlagKit-Swift.h looks like:

enum FKFlagStyle : NSInteger;

SWIFT_CLASS_NAMED("Flag")
@interface FKFlag : NSObject
/// Country code of the flag
@property (nonatomic, readonly, copy) NSString * _Nonnull countryCode;
/// Original unstyled flag image
@property (nonatomic, readonly, strong) UIImage * _Nonnull originalImage;
/// Returns a flag if the country code is supported, otherwise it returns nil
- (nullable instancetype)initWithCountryCode:(NSString * _Nonnull)countryCode OBJC_DESIGNATED_INITIALIZER;
/// Returns a styled flag according to the provided style
/// \param style Desired flag style
///
- (UIImage * _Nonnull)imageWithStyle:(enum FKFlagStyle)style SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

typedef SWIFT_ENUM_NAMED(NSInteger, FKFlagStyle, "FlagStyle", closed) {
/// Rectangle of 21 x 15 points with no styling.
  FKFlagStyleNone = 0,
/// Rectangle of 21 x 15 points with rounded corners.
  FKFlagStyleRoundedRect = 1,
/// Square of 15 x 15 points with rounded corners.
  FKFlagStyleSquare = 2,
/// Circular flag of 15 x 15 points.
  FKFlagStyleCircle = 3,
};