だから私は、現在の目的であるオープンソースプロジェクトを迅速に書き直しています。私は、この複雑なプロジェクトに取り組むための最善の方法は、各クラスを一度に書き直して統合することだと考えました。だから私は最初のクラスを書き直して、すべての目的のクラスを即時クラスに向けることができ、コンパイルエラーはありません。目的のCプロジェクトで迅速なクラスで問題をデバッグするテクニックはありますか?
プログラムを実行すると失敗します。私はオブジェクトが作成されていないためだと思う。 swiftclass-swift.hファイルが作成されましたが、自動的に作成されないメソッドを手動で追加する必要がありました。問題が何であるかをデバッグする最良の方法は何かに関する技術や記事はありますか?新しいクラスの呼び出しごとにブレークポイントを作成するか、問題を特定するためのワークフローがありますか?
私はクラスが初期化されているブレークポイントを作成しましたが、何も明白ではありません。さらに、クラスに対して単体テストを作成しようとしましたが、xcodeがテストを実行する前にプログラムをコンパイルしようとするため、これらは実行されません。また、クラスは遊び場でうまく動作することに注意してください。読むための助けや情報があれば幸いです。ここで
クラスです:
class DateRange: NSObject, NSCopying {
private var dateFormatter = NSDateFormatter()
var start: NSDate
var end: NSDate
var isEmpty: Bool {
get {return self.start.self.isEqualToDate(self.end)}
}
init(start: NSDate?, end: NSDate?) {
self.start = start!
self.end = end!
super.init()
}
class func dateRange<DR: DateRange>(start: NSDate?, end: NSDate?) -> DR {
let dateR = DateRange(start: start, end: end) as! DR
return dateR
}
func components(unitFlags: NSCalendarUnit, forCalendar calendar: NSCalendar) -> NSDateComponents? {
self.checkIfValid()
return calendar.components(unitFlags, fromDate: self.start, toDate: self.end, options: NSCalendarOptions.WrapComponents)
}
func checkIfValid() {
assert(self.start.compare(self.end) != .OrderedDescending)
}
func containsDate(date: NSDate) -> Bool {
self.checkIfValid()
return date.compare(self.start) != .OrderedDescending || self.end.compare(self.start) != .OrderedDescending
}
func intersectDateRange(range: DateRange?) {
self.checkIfValid()
if (range!.end.compare(self.start) != .OrderedDescending || self.end.compare(range!.start) != .OrderedDescending) {
self.end = self.start
return
}
if self.start.compare(range!.start) == .OrderedAscending {
self.start = range!.start
}
if range!.end.compare(self.end) == .OrderedAscending {
self.end = range!.end
}
}
func intersectsDateRange(range: DateRange?) -> Bool {
if range!.end.compare(self.start) != .OrderedDescending || self.end.compare(range!.start) != .OrderedDescending {
return false
}
return true
}
func includesDateRange(range: DateRange?) -> Bool {
if range!.start.compare(self.start) == .OrderedAscending || self.end.compare(range!.end) == .OrderedAscending { return false
}
return true
}
func unionDateRange(range: DateRange?) {
self.checkIfValid()
range!.checkIfValid()
self.start = self.start.earlierDate((range?.start)!)
self.end = self.end.laterDate((range?.end)!)
}
func enumerateDaysWithCalendar(calendar: NSCalendar?, usingBlock: (day: NSDate?, stop: Bool?) ->()) -> Void {
let comp: NSDateComponents = NSDateComponents()
comp.day = 1
var date: NSDate = self.start
let stop: Bool = false
while !stop && date.compare(self.end) == .OrderedAscending {
usingBlock(day: date, stop: stop)
date = (calendar?.dateByAddingComponents(comp, toDate: self.start, options: NSCalendarOptions.WrapComponents))!
comp.day += 1
}
}
func isEqualToDate(range: DateRange?) -> Bool {
return range == range!.start.isEqualToDate(self.start) && range!.end.isEqualToDate(self.end)
}
// MARK: - NSObject
func copyWithZone(zone: NSZone) -> AnyObject {
return DateRange(start: self.start, end: self.end)
}
override func isEqual(object: AnyObject?) -> Bool {
var isObject = Bool()
if self.isEqual(object) {
isObject = true
}
if ((object?.isKindOfClass(DateRange)) != nil) {
isObject = false
}
return isObject
}
}
あなたはそれを言及しなかったので、私は頼んだと思った、あなたのブリッジヘッダーの設定は適切ですか?あなたがそれを実行したときに「失敗する」と言うと、プログラム全体が失敗したり、新しいクラスが呼び出されたりするだけですか? – fsb
ヘッダーが作成されました。作成されなかったメソッドを追加する必要がありました。私は質問を更新しました。 – Chris
失敗を説明できますか? –