【发布时间】:2016-07-25 05:40:42
【问题描述】:
我看到了:
类型
RLMResults<RLMObjectType>不符合协议Sequence
在转换为 Swift 3 时。我正在寻找适用于 Swift 3.0 的 Realm 版本,但是我找不到合适的版本,甚至找不到分支。
我试图写一个扩展,但仍然是同样的错误信息:
extension RLMResults: Sequence
{
public func makeIterator() -> RLMResults.Iterator
{
return NSFastEnumerationIterator(self)
}
}
我该如何修复它,或者在哪里可以找到合适的框架或分支?
更新: 需要Sequence协议的代码:
public class RealmChartUtils: NSObject
{
/// Transforms the given Realm-ResultSet into an xValue array, using the specified xValueField
public static func toXVals(results: RLMResults<RLMObject>, xValueField: String) -> [String]
{
let addedValues = NSMutableSet()
var xVals = [String]()
for object in results // <-- here needs Sequence protocol
{
let xVal = (object as! RLMObject)[xValueField] as! String!
if !addedValues.contains(xVal!)
{
addedValues.add(xVal!)
xVals.append(xVal!)
}
}
return xVals
}
}
所以在 swift 2.2 中,我们在上面的函数之后添加了如下扩展:
extension RLMResults: SequenceType
{
public func generate() -> NSFastGenerator
{
return NSFastGenerator(self)
}
}
extension RLMArray: SequenceType
{
public func generate() -> NSFastGenerator
{
return NSFastGenerator(self)
}
}
所以在 Xcode 8 beta 3 中,它说 SequenceType 重命名为 Sequence,但这是最初的问题,因为我试图使上述扩展符合 Sequence(这是我第一个发布的扩展),编译器一直说Type RLMResults<RLMObjectType> does not conform to protocol Sequence
我可以在不升级 Realm swift 框架的情况下解决这个问题吗(我宁愿等待发布,而不是此时自行构建 master 分支)
【问题讨论】: