Tag: 快速枚举

需要生成的JSON文档与在iOS中的NSMutableDictionary中插入的对象的顺序相同

我从一个NSMutableDictionary生成一个JSON文档,这个NSMutableDictionary是由指向NSString的键组成,还有两个键又指向其他NSMutableDictionary的键。 我的问题是,当我输出JSON文档时,我注意到JSON文档具有我以不同顺序插入到NSMutableDictionary中的对象。 例如,我目前的输出如下所示: JSON Output: { "devicetype" : "iPhone Simulator", "os" : "6.0", "test_results" : [ { "date" : "2012-12-25T20:38:09", "name" : "Test 1", "result" : "Fail" }, { "date" : "2012-12-25T20:38:11", "name" : "Test 2", "result" : "Pass" }, { "date" : "2012-12-25T20:38:13", "name" : "Test 3", "result" : "Pass" }, { "date" : […]

通过UICollectionView单元快速枚举 – Swift

我想通过所有的收集视图单元快速枚举,但是下面的这个实现给我一个警告。 for cell in self.collectionView?.visibleCells() as [UICollectionViewCell] { // Do Stuff } 下面的错误出现在第一行: postfix'?'的操作数 应该有可选的types; types是'(UICollectionView,cellForItemAtIndexPath:NSIndexPath) – > UICollectionViewCell' 我已经尝试了可选项,并在Xcode 6 Beta 6中工作,但无济于事的“Beta 7” 我如何摆脱这个错误? /编写一个循环遍历所有我的CollectionView单元格?

iPhone:如何通过UITextFields枚举

简单的问题在这里:哪个是通过子视图枚举正确的方式来查找文本字段? NSMutableArray *mutableTFs = [[NSMutableArray alloc] init]; for (UIView *view in [self.view subviews]) { if ([view isKindOfClass:[UITextField class]]) { [mutableTFs addObject:view]; } } 要么 NSMutableArray *mutableTFs = [[NSMutableArray alloc] init]; for (UITextField *textField in [self.view subviews]) { [mutableTFs addObject:textField]; } 我知道这不是正确的措辞,但我不明白的是,如果它是顶级的方法,你怎么“转换”它从一个视图到文本字段?

如何在循环内部工作 – 目标C – 基础

我find了这个答案: https://stackoverflow.com/a/5163334/1364174 其中介绍了如何for in循环。 NSFastEnumerationState __enumState = {0}; id __objects[MAX_STACKBUFF_SIZE]; NSUInteger __count; while ((__count = [myArray countByEnumeratingWithState:&__enumState objects:__objects count:MAX_STACKBUFF_SIZE]) > 0) { for (NSUInteger i = 0; i < __count; i++) { id obj = __objects[i]; [obj doSomething]; } } 问题是,我发现它是错的。 首先,当你打开自动引用计数(ARC)时,你得到一个错误 Sending '__strong id *' to parameter of type '__unsafe_unretained_id*' changes retain/release properties of […]

核心数据/ NSOperation:通过枚举和删除对象时崩溃

我有一个核心的数据为基础的应用程序,有一个对象(列表)的对象(列表项)的关系。 我正在设备之间同步数据,并作为我从后台线程中的XML文件导入列表(通过NSOperation子类)的一部分。 当我更新一个现有的列表,我删除它的所有旧的列表项(从特定于该线程的NSManagedObjectContext),并从XML文件中取代新的列表项…删除通过枚举通过项目列表: for (ListItemCD *item in listToUpdate.listItems) { [self.importContext deleteObject:item]; } 然而,偶尔有一次,我在枚举期间崩溃了: *由于未捕获的exception“NSGenericException”而终止应用程序,原因:“* Collection <_NSFaultingMutableSet:0x4fcfcb0>在枚举时发生了变化。 我不确定从哪里开始寻找这个问题的原因。 枚举发生时,我不修改代码的任何其他部分中的列表。 可以有多个线程在同一时间,因为不同的列表导入/更新…将保存在另一个线程的上下文导致一个问题 – 因为它也通知主要上下文(如果它发生在同一时间的枚举) ? 如果有帮助,下面是我的NSOperation子类的“main”函数中的代码(我从Core Data中删除旧列表项,并通过parsingXML数据来更新列表): – (void)main { // input the xml data into GDataXML NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:self.filePath]; NSError *error; GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:&error]; // get the list name […]

随着快速枚举和NSDictionary,迭代按键的顺序是不能保证 – 我怎么能这样做是为了?

我正在与一个API发送回一个NSDictionary作为响应与我的应用程序需要的数据(数据基本上是一个提要)进行通信。 这个数据按照最新到最旧sorting,最新的项目在NSDictionary的前面。 当我使用for (NSString *key in articles) { … }快速枚举它们时for (NSString *key in articles) { … }顺序看起来是随机的,因此我对它们的操作顺序并不是从最新到最旧的顺序,就像我想要的那样,但完全是随机的。 我读过了,当使用NSDictionary快速枚举时,不保证按顺序遍历数组。 但是,我需要它。 我如何使它按照NSDictionary所在的顺序遍历NSDictionary?

最快的方法来检查一个数组是否包含另一个数组的相同对象

目标是比较两个数组,并检查它们是否包含相同的对象(尽可能快 – 数组中有很多对象)。 数组不能用isEqual:检查isEqual:因为它们是不同的sorting方式。 我已经尝试过这里发布的解决scheme( https://stackoverflow.com/a/1138417 – 请参阅Peter Hosey的post的最后一段代码片段)。 但是这不适用于不同的sorting数组。 我现在使用的代码如下: + (BOOL)arraysContainSameObjects:(NSArray *)array1 andOtherArray:(NSArray *)array2 { // quit if array count is different if ([array1 count] != [array2 count]) return NO; BOOL bothArraysContainTheSameObjects = YES; for (id objectInArray1 in array1) { BOOL objectFoundInArray2 = NO; for (id objectInArray2 in array2) { if ([objectInArray1 isEqual:objectInArray2]) […]

通过子视图循环检查空的UITextField – Swift

我想知道如何从根本上将下面的目标C代码转换成swift。 这将遍历所需的视图上的所有子视图,检查它们是否是文本框,然后检查它们是否为空。 for (UIView *view in contentVw.subviews) { NSLog(@"%@", view); if ([view isKindOfClass:[UITextField class]]) { UITextField *textfield = (UITextField *)view; if (([textfield.text isEqualToString:""])) { //show error return; } } } 到目前为止,这里是我与快速翻译的地方: for view in self.view.subviews as [UIView] { if view.isKindOfClass(UITextField) { //… } } 任何帮助将是伟大的!