标签: nsfastenumeration

SWIFT 3.0迁移错误 - 泛型Obj-C类的扩展无法在运行时访问类的泛型参数

我有这个代码在Swift 2中正常工作.

extension PHFetchResult: Sequence {
     public func makeIterator() -> NSFastEnumerationIterator {
         return NSFastEnumerationIterator(self)
     }
}
Run Code Online (Sandbox Code Playgroud)

自从我升级到Swift 3

泛型Objective-C类的扩展无法在运行时访问类的泛型参数

我不知道如何解决这个问题.任何帮助深表感谢!

xcode objective-c nsfastenumeration swift swift3

15
推荐指数
1
解决办法
1932
查看次数

Swift 3中的NSFastEnumeration

我试图迭代CMSensorDataList返回的类对象CMSensorRecorder.accelerometerData(from:to:).该课程确认了NSFastEnumeration协议.所以我尝试了/sf/answers/1811109401/中提到的技巧.但是,由于我使用的是Xcode Version 8.0 beta(8S128d),它不再有效.

我该怎么做才能使它支持for-in循环?

ios nsfastenumeration swift

4
推荐指数
1
解决办法
2447
查看次数

为什么循环变量在循环后变为`nil`

我有:

NSDictionary* server;

for (server in self.servers)
{
    if (<some criterium>)
    {
        break;
    }
}

// If the criterium was never true, I want to use the last item in the
// the array. But turns out that `server` is `nil`.
Run Code Online (Sandbox Code Playgroud)

循环块永远不会改变server.

servers是一个NSMutableArray词典,一个在循环中没有改变的属性.

为什么循环结束后server有值nil

这是我第一次在循环后使用这样的变量.没有想太多,我认为它会像(在旧的C天)一样工作:

int i;
for (i = 0; i < n; i++)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c nsdictionary fast-enumeration nsfastenumeration

4
推荐指数
2
解决办法
160
查看次数

如何实现countByEnumeratingWithState:objects:count:用于内部使用NSMutableArray的类

我想用

 for (TBL_CardView *cardView in cardsInHand)
    {
        // <#statements#>
    }
Run Code Online (Sandbox Code Playgroud)

TBL_CardView是我的自定义类,而且cardsInHand只是(TBL_CardViewArray*)

所以我需要countByEnumeratingWithState:objects:count:为我的TBL_CardViewArray班级实施.
它是否正确 ?

这是我的TBL_CardViewArray.h

/**
 *    Keep TBL_CardView in array
 */
@interface TBL_CardViewArray : NSObject

- (TBL_CardView *)drawCard;
- (void)addCard:(TBL_CardView *)card;
- (NSUInteger)cardsRemaining;
- (NSArray*) cardViewArray;

- (TBL_CardView *)drawRandomCard;

@end 
Run Code Online (Sandbox Code Playgroud)

来自TBL_CardViewArray.m的一些重要部分

@implementation TBL_CardViewArray
{
    NSMutableArray *_cards;
}
Run Code Online (Sandbox Code Playgroud)

所以我只是使用TBL_CardViewArrayNSMutableArray的包装来存储我的TBL_CardView类.

问题
如何实现countByEnumeratingWithState:objects:count:用于我的TBL_CardViewArray类.

我确实谷歌它,但没有找到一些我可以轻松重用的例子.
我的假设是因为我已经在使用NSMutableArray存储它并不是那么复杂,但我无法弄清楚如何?

objective-c nsmutablearray ios nsfastenumeration

3
推荐指数
1
解决办法
1171
查看次数

enumerateObjectsUsingBlock:比for-in循环更快吗?为什么?

我正在阅读关于枚举NSHipster文章,该文章声称for-in循环比以下更快enumerateObjectsUsingBlock::

除非你在迭代时实际需要数字索引,否则使用for/in NSFastEnumeration循环几乎总是更快.

这个答案为该引用提供了一些反驳:

快速枚举需要从内部表示转换为快速枚举的表示.其中有开销.基于块的枚举允许集合类以最快遍历本机存储格式的速度枚举内容.

从内部表示转移到快速枚举的表示的翻译过程是什么?我知道那里有一些开销,但多少钱?

objective-c nsfastenumeration

1
推荐指数
1
解决办法
1997
查看次数