From 12d4ccab0beb2e2ae7e03d9778b48306f468907b Mon Sep 17 00:00:00 2001 From: Xuan Liu Date: Thu, 8 Sep 2016 14:11:01 +0800 Subject: [PATCH] fix attempt for Realm support --- .../Classes/Data/RealmBarDataSet.swift | 2 +- .../Classes/Data/RealmBaseDataSet.swift | 2 +- .../Classes/Utils/RealmChartUtils.swift | 42 ++++++++++++++----- 3 files changed, 33 insertions(+), 13 deletions(-) diff --git a/ChartsRealm/Classes/Data/RealmBarDataSet.swift b/ChartsRealm/Classes/Data/RealmBarDataSet.swift index c2040a8d30..edc784d527 100644 --- a/ChartsRealm/Classes/Data/RealmBarDataSet.swift +++ b/ChartsRealm/Classes/Data/RealmBarDataSet.swift @@ -112,7 +112,7 @@ open class RealmBarDataSet: RealmBarLineScatterCandleBubbleDataSet, IBarChartDat var values = [Double]() for val in value as! RLMArray { - values.append((val as! RLMObject)[_stackValueField!] as! Double) + values.append(val[_stackValueField!] as! Double) } entry = BarChartDataEntry(values: values, xIndex: _xIndexField == nil ? Int(atIndex) : object[_xIndexField!] as! Int) } diff --git a/ChartsRealm/Classes/Data/RealmBaseDataSet.swift b/ChartsRealm/Classes/Data/RealmBaseDataSet.swift index ad19355fb2..91ece0d8e6 100644 --- a/ChartsRealm/Classes/Data/RealmBaseDataSet.swift +++ b/ChartsRealm/Classes/Data/RealmBaseDataSet.swift @@ -364,7 +364,7 @@ open class RealmBaseDataSet: ChartBaseDataSet for e in foundObjects { - entries.append(buildEntryFromResultObject(e as! RLMObject, atIndex: UInt(x))) + entries.append(buildEntryFromResultObject(e, atIndex: UInt(x))) } } diff --git a/ChartsRealm/Classes/Utils/RealmChartUtils.swift b/ChartsRealm/Classes/Utils/RealmChartUtils.swift index 135b0f2d46..59bc500ec6 100644 --- a/ChartsRealm/Classes/Utils/RealmChartUtils.swift +++ b/ChartsRealm/Classes/Utils/RealmChartUtils.swift @@ -24,7 +24,7 @@ open class RealmChartUtils: NSObject for object in results { - let xVal = (object as! RLMObject)[xValueField] as! String! + let xVal = object[xValueField] as! String! if !addedValues.contains(xVal!) { addedValues.add(xVal!) @@ -35,19 +35,39 @@ open class RealmChartUtils: NSObject return xVals } } +extension RLMObject { + // Swift query convenience functions + public class func objects(where predicateFormat: String, _ args: CVarArg...) -> RLMResults { + return objects(with: NSPredicate(format: predicateFormat, arguments: getVaList(args))) + } -extension RLMResults: Sequence -{ - open func makeIterator() -> NSFastEnumerationIterator - { - return NSFastEnumerationIterator(self) + public class func objects(in realm: RLMRealm, + where predicateFormat: String, + _ args: CVarArg...) -> RLMResults { + return objects(in: realm, with: NSPredicate(format: predicateFormat, arguments: getVaList(args))) } } -extension RLMArray: Sequence -{ - open func makeIterator() -> NSFastEnumerationIterator - { - return NSFastEnumerationIterator(self) +public final class RLMIterator: IteratorProtocol { + private let iteratorBase: NSFastEnumerationIterator + + internal init(collection: RLMCollection) { + iteratorBase = NSFastEnumerationIterator(collection) + } + + public func next() -> RLMObject? { + return iteratorBase.next() as! RLMObject? + } +} + +// Sequence conformance for RLMArray and RLMResults is provided by RLMCollection's +// `makeIterator()` implementation. +extension RLMArray: Sequence {} +extension RLMResults: Sequence {} + +extension RLMCollection { + // Support Sequence-style enumeration + public func makeIterator() -> RLMIterator { + return RLMIterator(collection: self) } }