Questions tagged «objective-c»

仅在有关Objective-C功能或取决于语言代码的问题上使用此标记。标签[cocoa]和[cocoa-touch]应该用于询问Apple的框架或类。使用相关标签[ios],[macos],[apple-watch]和[tvos]来解决特定于这些平台的问题。


6
使用NSPredicate根据NSDictionary键过滤NSArray
我有很多字典。 我想根据一个键过滤数组。 我尝试了这个: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT == %@)", @"Football"]; NSArray *filteredArray = [data filteredArrayUsingPredicate:predicate]; 这行不通,我没有结果。我想我做错了。我知道如果“ SPORT”是ivar,这就是方法。我认为如果是密钥,可能会有所不同。 我还没有找到一个例子。 谢谢 更新资料 我在要搜索的字符串周围加了引号。 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT == '%@')", @"Football"]; 它仍然不起作用。 更新2 解决了。实际上,我不得不删除单引号,这似乎与指南中所说的背道而驰。 我真正的问题是我有一个嵌套数组,而我实际上并没有评估字典。骨头移动。


18
“ wait_fences:未能收到回复:10004003”?
由于以下代码行,我第一次(也是第一次)收到此神秘错误: - (void)viewWillAppear:(BOOL)animated { [textField becomeFirstResponder]; } 因此,有一个明显的延迟(甚至在模拟器上约为3-4秒),这使我的应用程序无响应。有谁知道如何解决这一问题?我在Apple网站上找不到任何文档,也没有在这里或Google上找到任何解决方案。 奇怪的是,如果我插入该行-viewDidAppear:而不是-viewWillAppear:;,则会出现相反的情况。也就是说,不是只在第一次显示键盘时才打印错误,而是从不再次显示错误,而是不是第一次而是在每次之后都显示错误。这给我造成了极大的头痛。

17
有记录的方式设置iPhone方向吗?
我有一个应用,希望在某些视图中支持设备旋转,但在风景模式下,其他应用尤其没有意义,因此当我换掉视图时,我想强制将旋转设置为纵向。 UIDevice上有一个未记录的属性设置器,可以完成此操作,但显然会生成编译器警告,并且可能在以后的SDK版本中消失。 [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait]; 是否有任何记录的方式来强制定位? 更新:我以为我将提供一个示例,因为我已经实现了该示例,因此我没有寻找shouldAutorotateToInterfaceOrientation。 我希望我的应用在View 1中支持横向和纵向,但在View 2中仅支持纵向。我已经为所有视图实现了shouldAutorotateToInterfaceOrientation,但是如果用户在View 1中处于横向模式,然后切换到View 2,我想强制手机旋转回肖像。

7
容器视图控制器示例[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 4年前关闭。 改善这个问题 谁能指出我将自定义视图控制器创建为容器视图控制器的任何好例子?我可以找到的唯一文档是《UIViewController类参考》中的几段。我觉得我需要的比这更多的信息,并且示例实现会很好。谷歌什么也没发现。 我对这种方法特别感兴趣: transitionFromViewController:toViewController:duration:options:animations:completion:


4
Xcode版本(CFBundleShortVersionString)和内部版本(CFBundleVersion)之间的区别
在Xcode 4中,我将其作为目标摘要: “版本”输入对应CFBundleShortVersionString于info.plist文件,而“构建”输入对应于CFBundleVersion。 两者有什么区别?我看到互联网上很多人都希望为两者都赋予相同的价值,我的怀疑是向后兼容。 我有两个问题: 1)如果我从头开始,那么对您的应用进行版本控制的最佳实践是什么? 2)在我的应用程序的所有先前发行版中,我仅使用CFBundleVersion。为了不弄乱升级过程,我是否应该像以前一样继续增加CFBundleVersion,还是有可能切换到“正确的方式”?

7
使用hitTest:withEvent捕获子视图在其父视图框架之外的触摸:
我的问题:我有一个超级视图EditView,它基本上占据了整个应用程序框架,一个子视图MenuView只占据了底部约20%的位置,然后MenuView包含了一个自己的子视图ButtonView,该子视图实际上位于MenuViews的范围之外(类似这样:)ButtonView.frame.origin.y = -100。 (注意:EditView具有不属于MenuView视图层次结构的其他子视图,但可能会影响答案。) 您可能已经知道了这个问题:何时ButtonView在的范围内MenuView(或更具体地说,当我的触摸在MenuView的范围内时),ButtonView对触摸事件做出响应。当我的触摸不在MenuView的范围内(但仍在ButtonView的范围内)时,不会收到任何触摸事件ButtonView。 例: (E)是EditView,所有视图的父级 (M)是MenuViewEditView的子视图 (B)是ButtonViewMenuView的子视图 图解: +------------------------------+ |E | | | | | | | | | |+-----+ | ||B | | |+-----+ | |+----------------------------+| ||M || || || |+----------------------------+| +------------------------------+ 因为(B)在(M)的框架之外,所以(B)区域中的轻击将永远不会发送到(M)-实际上,在这种情况下(M)绝不会分析触摸,并且将触摸发送到层次结构中的下一个对象。 目标:我认为重写hitTest:withEvent:可以解决此问题,但我不完全知道该怎么做。就我而言,应该hitTest:withEvent:在EditView(我的“主”超级视图)中覆盖?还是应将其覆盖MenuView,不接受触摸的按钮的直接视图?还是我在想这个错误? 如果这需要冗长的解释,那么很好的在线资源将对您有所帮助-苹果公司的UIView文档除外,但我对此并不清楚。 谢谢!

5
如何在Xcode中正确使用Git?
我曾经是iPhone开发人员,有一段时间了,最​​近我在工作流程中加入了git。到目前为止,我已经在http://shanesbrain.net/2008/7/9/using-xcode-with-git上找到了我的工作流程中使用的git设置。 这些设置告诉git从合并中排除* .pbxproj吗?是否有这样做的真正原因?例如,当我将一个文件添加到项目中并推送到源时,同伴开发人员在提取时不会将该文件添加到他们的xcode项目中。然后,如果其中一个构建了发行版,则可能不包含该文件。我不应该让git处理项目文件的合并吗?为什么或为什么不应该将此文件合并,以及在将文件添加到项目时如何正确处理这种情况?
94 ios  objective-c  xcode  git 

16
在UIButton中将图像缩放到AspectFit?
我想将图像添加到UIButton,也想缩放图像以适合UIButton(使图像变小)。请告诉我该怎么做。 这是我尝试过的方法,但是不起作用: 将图像添加到按钮并使用setContentMode: [self.itemImageButton setImage:stretchImage forState:UIControlStateNormal]; [self.itemImageButton setContentMode:UIViewContentModeScaleAspectFit]; 制作“拉伸图像”: UIImage *stretchImage = [updatedItem.thumbnail stretchableImageWithLeftCapWidth:0 topCapHeight:0];

12
iOS图像方向行为异常
在过去的几周中,我一直在用Objective-C处理图像,并注意到许多奇怪的行为。首先,和许多其他人一样,我一直遇到这个问题,即用相机拍摄的图像(或用别人的相机拍摄并发给我的彩信)旋转了90度。我不确定为什么在世界上发生这种情况(因此提出了我的问题),但是我能够提出一个廉价的解决方案。 我这次的问题是为什么会这样?苹果为什么要旋转图像?当我将相机正面朝上拍摄照片时,除非执行上述代码,否则在保存照片时会旋转保存。现在,我的解决方法在几天前还可以。 我的应用程序修改了图像的各个像素,特别是PNG的alpha通道(因此,对于我的方案,任何JPEG转换都被抛出窗口外)。几天前,我注意到,由于使用了变通方法代码,即使图像在我的应用程序中正确显示,当我的算法修改图像的各个像素时,它仍认为图像是旋转的。因此,它不会修改图像顶部的像素,而是会修改图像侧面的像素(因为它认为应该旋转像素)!我不知道如何旋转内存中的图像-理想情况下,我宁愿只擦除该imageOrientation标志。 这也让我感到困惑。当我拍摄照片时,将imageOrientation其设置为3。我的变通方法代码足够聪明,可以实现并翻转它,因此用户不会注意到。另外,我将图像保存到库中的代码实现了这一点,将其翻转然后保存,以使其正确显示在相机胶卷中。 该代码如下所示: NSData* pngdata = UIImagePNGRepresentation (self.workingImage); //PNG wrap UIImage* img = [self rotateImageAppropriately:[UIImage imageWithData:pngdata]]; UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil); 当我将此新保存的图像加载到我的应用程序中时,其imageOrientation值为0-正是我要查看的图像,甚至不需要运行旋转解决方法(请注意:从互联网加载图像而不是使用相机拍摄的图像时) ,imageOrientation则始终为0,从而获得完美的行为)。由于某种原因,我的保存代码似乎清除了此imageOrientation标志。我希望只是窃取该代码,并在用户拍摄照片并将其添加到应用程序后立即使用它擦除我的imageOrientation,但似乎不起作用。有UIImageWriteToSavedPhotosAlbum什么特别之处imageOrientation吗? 解决此问题的最佳方法是imageOrientation在用户完成拍摄图像后立即吹走。我认为苹果的旋转行为是有原因的,对吧?少数人认为这是苹果的缺陷。 (...如果您还没有迷路,请注意...)注2:当我拍摄水平照片时,一切似乎都可以正常工作,就像从互联网上拍摄的照片一样) 编辑: 这是一些实际的图像和场景。根据到目前为止的评论,看起来这种奇怪的行为不只是iPhone行为,我认为还不错。 这是我用手机拍摄的照片的图片(请注意正确的方向),它的外观与拍摄照片时在手机上的外观完全相同: 这是我通过电子邮件将图像发送给自己后在Gmail中的外观(看起来Gmail可以正确处理): 这是图像在Windows中作为缩略图的样子(看起来好像处理不当): 这是使用Windows Photo Viewer打开时的实际图像外观(仍然无法正确处理): 在对这个问题进行了所有评论之后,这就是我的想法... iPhone拍摄了一张图像,并说“要正确显示此图像,必须将其旋转90度”。此信息将在EXIF数据中。(我不知道为什么它需要旋转90度,而不是默认为笔直垂直)。从这里开始,Gmail足够智能,可以读取和分析该EXIF数据并正确显示。但是,Windows不够智能,无法读取EXIF数据,因此无法正确显示图像。我的假设正确吗?

9
文件Main.storyboard需要Xcode 8.0或更高版本
我下载了Xcode beta,并打开了现有项目,以了解它如何与Xcode 8 beta一起工作(我从Xcode 8中打开了Storyboard文件)。 现在,当我从Xcode 7.3打开项目时,无法打开情节提要文件,它给了我以下错误 此版本不支持以Xcode 8格式保存的文档。使用Xcode 8.0或更高版本打开此文档。 当我想继续使用Xcode 7时,应该做些什么来恢复原状。 在Xcode 8中,系统提示我选择设备,然后选择了iPhone 6S,我认为这部分原因是导致故事板文件无法在Xcode 7中打开



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.