Skip to content
This repository has been archived by the owner on Feb 8, 2023. It is now read-only.

Commit

Permalink
Swift 3 support
Browse files Browse the repository at this point in the history
  • Loading branch information
hongxinhope committed Sep 22, 2016
1 parent 434a8b1 commit ae3d752
Show file tree
Hide file tree
Showing 29 changed files with 533 additions and 520 deletions.
2 changes: 1 addition & 1 deletion Cartfile.resolved
Original file line number Diff line number Diff line change
@@ -1 +1 @@
github "teambition/RRuleSwift" "0.0.7"
github "teambition/RRuleSwift" "0.1.1"
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ let occurrenceDate = ...
// initialization and configuration
// RecurrencePicker can be initialized with a recurrence rule or nil, nil means "never repeat"
let recurrencePicker = RecurrencePicker(recurrenceRule: recurrenceRule)
recurrencePicker.language = .English
recurrencePicker.calendar = NSCalendar.currentCalendar()
recurrencePicker.tintColor = UIColor.blueColor()
recurrencePicker.language = .english
recurrencePicker.calendar = Calendar.current
recurrencePicker.tintColor = UIColor.blue
recurrencePicker.occurrenceDate = occurrenceDate

// assign delegate
Expand All @@ -42,8 +42,8 @@ navigationController?.pushViewController(recurrencePicker, animated: true)

##### Implement the delegate
```swift
func recurrencePicker(picker: RecurrencePicker, didPickRecurrence recurrenceRule: RecurrenceRule?) {
// do something, if recurrenceRule is nil, that means "never repeat".
func recurrencePicker(_ picker: RecurrencePicker, didPickRecurrence recurrenceRule: RecurrenceRule?) {
// do something, if recurrenceRule is nil, that means "never repeat".
}
```

Expand All @@ -59,9 +59,9 @@ RecurrencePicker supports 5 languages: English, Simplified Chinese, Traditional
You can also get a localized rule text string like this:
```swift
let ruleString = "RRULE:FREQ=WEEKLY;INTERVAL=2;WKST=MO;DTSTART=20160413T133011Z;BYDAY=TU,WE,FR"
let recurrenceRule = RecurrenceRule(recurrenceWithRRuleString: ruleString)
let recurrenceRule = RecurrenceRule(rruleString: ruleString)
let language: RecurrencePickerLanguage = ...
let recurrenceRuleText = recurrenceRule?.toText(language: language, occurrenceDate: NSDate())
let recurrenceRuleText = recurrenceRule?.toText(of: language, occurrenceDate: Date())
print(recurrenceRuleText)
// Event will occur every 2 weeks on Tuesday, Wednesday and Friday.
// 事件将每2周于星期二、星期三和星期五重复一次。
Expand Down
14 changes: 13 additions & 1 deletion RecurrencePicker.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -195,11 +195,12 @@
D3BB7F0A1CB4F26A0068A253 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0730;
LastUpgradeCheck = 0800;
ORGANIZATIONNAME = Teambition;
TargetAttributes = {
D3BB7F121CB4F26A0068A253 = {
CreatedOnToolsVersion = 7.3;
LastSwiftMigration = 0800;
};
};
};
Expand Down Expand Up @@ -284,6 +285,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
Expand All @@ -294,8 +296,10 @@
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
Expand Down Expand Up @@ -333,6 +337,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
Expand All @@ -343,8 +348,10 @@
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
Expand All @@ -364,6 +371,7 @@
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
Expand All @@ -375,6 +383,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
Expand All @@ -390,13 +399,15 @@
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 3.0;
};
name = Debug;
};
D3BB7F1D1CB4F26A0068A253 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
Expand All @@ -411,6 +422,7 @@
PRODUCT_BUNDLE_IDENTIFIER = Teambition.RecurrencePicker;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
};
name = Release;
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0730"
LastUpgradeVersion = "0800"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
Expand Down
84 changes: 43 additions & 41 deletions RecurrencePicker/Constants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ internal struct Constant {
static let pickerViewCellHeight: CGFloat = 215
static let pickerRowHeight: CGFloat = 40
static let pickerMaxRowCount = 999
static let detailTextColor = UIColor.grayColor()
static let detailTextColor = UIColor.gray

static let selectorVerticalPadding: CGFloat = 1
static let gridLineWidth: CGFloat = 0.5
Expand All @@ -33,64 +33,66 @@ internal struct Constant {
}

internal extension Constant {
static var frequencies: [RecurrenceFrequency] {
return [.Daily, .Weekly, .Monthly, .Yearly]
}
static var weekdays: [EKWeekday] {
return [EKWeekday.Monday, EKWeekday.Tuesday, EKWeekday.Wednesday, EKWeekday.Thursday, EKWeekday.Friday, EKWeekday.Saturday, EKWeekday.Sunday]
}
static func weekdaySymbols(language language: RecurrencePickerLanguage = InternationalControl.sharedControl.language) -> [String] {
let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale(localeIdentifier: language.identifier)
var weekdaySymbols = dateFormatter.weekdaySymbols
weekdaySymbols.insert(weekdaySymbols.removeAtIndex(0), atIndex: 6)
static let frequencies: [RecurrenceFrequency] = {
return [.daily, .weekly, .monthly, .yearly]
}()

static let weekdays: [EKWeekday] = {
return [.monday, .tuesday, .wednesday, .thursday, .friday, .saturday, .sunday]
}()

static func weekdaySymbols(of language: RecurrencePickerLanguage = InternationalControl.sharedControl.language) -> [String] {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: language.identifier)
var weekdaySymbols = dateFormatter.weekdaySymbols!
weekdaySymbols.insert(weekdaySymbols.remove(at: 0), at: 6)
return weekdaySymbols
}

static func shortMonthSymbols(language language: RecurrencePickerLanguage = InternationalControl.sharedControl.language) -> [String] {
let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale(localeIdentifier: language.identifier)
static func shortMonthSymbols(of language: RecurrencePickerLanguage = InternationalControl.sharedControl.language) -> [String] {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: language.identifier)
return dateFormatter.shortMonthSymbols
}

static func monthSymbols(language language: RecurrencePickerLanguage = InternationalControl.sharedControl.language) -> [String] {
let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale(localeIdentifier: language.identifier)
static func monthSymbols(of language: RecurrencePickerLanguage = InternationalControl.sharedControl.language) -> [String] {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: language.identifier)
return dateFormatter.monthSymbols
}

static func basicRecurrenceStrings(language language: RecurrencePickerLanguage = InternationalControl.sharedControl.language) -> [String] {
static func basicRecurrenceStrings(of language: RecurrencePickerLanguage = InternationalControl.sharedControl.language) -> [String] {
let internationalControl = InternationalControl(language: language)
return [internationalControl.localizedString(key: "basicRecurrence.never"),
internationalControl.localizedString(key: "basicRecurrence.everyDay"),
internationalControl.localizedString(key: "basicRecurrence.everyWeek"),
internationalControl.localizedString(key: "basicRecurrence.everyTwoWeeks"),
internationalControl.localizedString(key: "basicRecurrence.everyMonth"),
internationalControl.localizedString(key: "basicRecurrence.everyYear"),
internationalControl.localizedString(key: "basicRecurrence.everyWeekday"),]
return [internationalControl.localizedString("basicRecurrence.never"),
internationalControl.localizedString("basicRecurrence.everyDay"),
internationalControl.localizedString("basicRecurrence.everyWeek"),
internationalControl.localizedString("basicRecurrence.everyTwoWeeks"),
internationalControl.localizedString("basicRecurrence.everyMonth"),
internationalControl.localizedString("basicRecurrence.everyYear"),
internationalControl.localizedString("basicRecurrence.everyWeekday"),]
}

static func frequencyStrings(language language: RecurrencePickerLanguage = InternationalControl.sharedControl.language) -> [String] {
static func frequencyStrings(of language: RecurrencePickerLanguage = InternationalControl.sharedControl.language) -> [String] {
let internationalControl = InternationalControl(language: language)
return [internationalControl.localizedString(key: "frequency.daily"),
internationalControl.localizedString(key: "frequency.weekly"),
internationalControl.localizedString(key: "frequency.monthly"),
internationalControl.localizedString(key: "frequency.yearly"),]
return [internationalControl.localizedString("frequency.daily"),
internationalControl.localizedString("frequency.weekly"),
internationalControl.localizedString("frequency.monthly"),
internationalControl.localizedString("frequency.yearly"),]
}

static func unitStrings(language language: RecurrencePickerLanguage = InternationalControl.sharedControl.language) -> [String] {
static func unitStrings(of language: RecurrencePickerLanguage = InternationalControl.sharedControl.language) -> [String] {
let internationalControl = InternationalControl(language: language)
return [internationalControl.localizedString(key: "unit.day"),
internationalControl.localizedString(key: "unit.week"),
internationalControl.localizedString(key: "unit.month"),
internationalControl.localizedString(key: "unit.year"),]
return [internationalControl.localizedString("unit.day"),
internationalControl.localizedString("unit.week"),
internationalControl.localizedString("unit.month"),
internationalControl.localizedString("unit.year"),]
}

static func pluralUnitStrings(language language: RecurrencePickerLanguage = InternationalControl.sharedControl.language) -> [String] {
static func pluralUnitStrings(of language: RecurrencePickerLanguage = InternationalControl.sharedControl.language) -> [String] {
let internationalControl = InternationalControl(language: language)
return [internationalControl.localizedString(key: "pluralUnit.day"),
internationalControl.localizedString(key: "pluralUnit.week"),
internationalControl.localizedString(key: "pluralUnit.month"),
internationalControl.localizedString(key: "pluralUnit.year"),]
return [internationalControl.localizedString("pluralUnit.day"),
internationalControl.localizedString("pluralUnit.week"),
internationalControl.localizedString("pluralUnit.month"),
internationalControl.localizedString("pluralUnit.year"),]
}
}
Loading

0 comments on commit ae3d752

Please sign in to comment.