小编Cor*_*oyd的帖子

使用NSPredicate根据NSDictionary键过滤NSArray

我有一系列字典.

我想基于密钥过滤数组.

我试过这个:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT ==  %@)", @"Football"];

NSArray *filteredArray = [data filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)

这不起作用,我没有结果.我想我做错了什么.我知道如果"SPORT"是一个ivar,这就是方法.我认为如果它是关键的话可能会有所不同.

然而,我无法找到一个例子.

谢谢


更新

我在我正在搜索的字符串周围添加了引号.

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT ==  '%@')", @"Football"];
Run Code Online (Sandbox Code Playgroud)

它仍然无法正常工作.


更新2

解决了它.我实际上不得不删除单引号,这似乎与指南所说的相反.

我真正的问题是我有一个嵌套数组,我实际上并没有评估字典.骨头移动.

cocoa objective-c nsdictionary nsarray nspredicate

94
推荐指数
3
解决办法
10万
查看次数

将"核心数据堆栈"放在Cocoa/Cocoa Touch应用程序中的位置

在iPhone核心数据模板中,Apple将核心数据堆栈放在App Delegate中.

然而,我最初的倾向是将此代码移动到它自己的类中,该类的职责是处理核心数据堆栈的管理.

您是否通常将此功能封装在自己的类中,还是将其保留在App Delegate中?

iphone cocoa cocoa-touch core-data

67
推荐指数
5
解决办法
2万
查看次数

`[super viewDidLoad]`约定

我在实现之前和实现之后看到一些带有[super viewDidLoad]的示例代码.

我知道你并不总是打电话给超级(如许多其他讨论中所见).当你打电话给它时,是否需要在你编码之前或之后?

这可能会产生影响,具体取决于超级实施的功能.虽然你不应该知道super的实现来写你的.

当然,这适用于所有UIViewControllers委托方法(willAppear,didAppear等...)

有什么想法吗?

iphone cocoa cocoa-touch objective-c

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

在制作iPhone应用程序时,从xcodebuild中设置配置文件

我正在使用xcodebuild命令行编译我的iPhone应用程序.有没有办法传递某种选项来设置配置文件?一般来说,关于xcodebuild的信息似乎不多.

iphone xcode provisioning xcodebuild

41
推荐指数
5
解决办法
7万
查看次数

UITableView:删除带动画的部分

更新

我在下面的答案中发布了我的解决方案.我的第一次修订采用了不同的方法.


原始问题 我之前问了一个关于SO的问题我认为我解决了我的问题:

如何在删除行时处理不可见的行.(UITableViews)

但是,从UITableView中删除部分时,我现在又遇到了类似的问题.(当我改变表格中的部分/行数时,它们重新浮出水面).

在我因为我的帖子的剪切长度而失去你之前,让我清楚地说明问题,你可以尽可能多地阅读以提供答案.


问题:

如果从UITableView批量删除行和部分,应用程序有时会崩溃.这取决于表的配置以及我选择删除的行和部分的组合.

日志说我崩溃了,因为它说我没有正确更新数据源和表:

Invalid update: invalid number of rows in section 5.  The number of rows contained in an existing section after the update (2) must be equal to the number of rows contained in that section before the update (1), plus or minus the number of rows inserted or deleted from that section (0 inserted, 0 deleted).
Run Code Online (Sandbox Code Playgroud)

现在很快,在你写出明显的答案之前,我向你保证我确实已经从dataSource中正确添加和删除了行和部分.解释很冗长,但您可以按照方法在下面找到它.

那么,如果你仍然感兴趣......


处理部分和行的删除的方法:

- (void)createFilteredTableGroups{

    //index set to hold sections to remove for deletion animation …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch uitableview uikit

40
推荐指数
1
解决办法
5万
查看次数

有没有人通过原生iPhone应用程序实现PayPal API?

保持"在应用程序中"的唯一方法是给他们一个paypal移动网站的UIWebView并让他们在那里完成交易,否则用户需要使用他们的API密钥.

这听起来不错,有没有人有或看过任何示例代码?我不得不认为这是一段很常见的代码.

更新:Apple会允许吗?这是一个慈善机构的应用程序,所以我假设没有问题.

重新更新:我认为错了.Apple不允许使用paypal在应用内直接付款.您必须重定向到Web界面.

iphone cocoa-touch paypal objective-c

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

可可中的小写"k"

我知道这是一个常见的约定,但变量名中的"k"表示什么?(即kMaxImageViewSize)我查看了有关变量名称的Apple文档,但未发现它.

谢谢回答

iphone cocoa cocoa-touch

33
推荐指数
2
解决办法
9028
查看次数

从iPhone静态库中包含的类别调用方法会导致NSInvalidArgumentException

我已经创建了一个静态库来存放我的一些代码,比如类别.

我在"UIView-Extensions.h"中有一个名为Extensions的UIViews类别.

在这个类别中我有一个叫做的方法:

- (void)fadeOutWithDelay:(CGFloat)delay duration:(CGFloat)duration;
Run Code Online (Sandbox Code Playgroud)

调用此方法在Debug配置的模拟器上运行正常.

但是,如果尝试在设备上运行应用程序,我会收到NSInvalidArgumentException:

[UIView fadeOutWithDelay:duration:]: unrecognized selector sent to instance 0x1912b0
 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIView fadeOutWithDelay:duration:]: unrecognized selector sent to instance 0x1912b0
Run Code Online (Sandbox Code Playgroud)

似乎由于某种原因UIView-Extensions.h没有被包含在设备构建中.


我检查/尝试了什么

我确实尝试为NSString包含另一个类别,并且遇到了同样的问题.

其他文件,如整个类和函数都可以正常工作.这是一个在类别中出现的问题.

我做了一个干净的所有目标,但没有解决问题.

我检查了静态库项目,这些类别包含在目标的"copy headers"和"compile sources"组中.

静态库包含在主项目"链接二进制文件库"组中.

我添加静态库的另一个项目工作得很好.

我删除并重新添加静态库,没有运气

-ObjC链接器标志已设置

有任何想法吗?


nm输出

libFJSCodeDebug.a(UIView-Extensions.o):
000004d4 t -[UIView(Extensions) changeColor:withDelay:duration:]
00000000 t -[UIView(Extensions) fadeInWithDelay:duration:]
000000dc t -[UIView(Extensions) fadeOutWithDelay:duration:]
00000abc t -[UIView(Extensions) firstResponder]
000006b0 t -[UIView(Extensions) hasSubviewOfClass:]
00000870 t -[UIView(Extensions) hasSubviewOfClass:thatContainsPoint:]
000005cc t -[UIView(Extensions) rotate:]
000002d8 …
Run Code Online (Sandbox Code Playgroud)

iphone xcode cocoa-touch exception

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

将多个变换应用于UIView/CALayer

将多个变换应用于UIView并且它是相应的CALayer是否有任何问题?

具体来说,您是否可以"混合和匹配"CATransform3D与CGAffineTransforms而不会遇到问题?

在动画另一个变换同时动画时,是否还有直接设置变换的问题?

是否有任何"规则"应该如何做,或任何设计模式?

iphone cocoa-touch core-animation uikit

30
推荐指数
3
解决办法
2万
查看次数

是否可以不解雇UIAlertView

UIAlertviewDelegate协议有几个可选方法,包括:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
Run Code Online (Sandbox Code Playgroud)

这似乎表明并非所有按钮点击都会实际关闭警报视图.但是,我认为没有办法将警报视图配置为不按任何按钮自动关闭.

我是否必须创建一个子类来完成此任务?

为什么UIAlertViewDelegate协议具有:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex;
- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
Run Code Online (Sandbox Code Playgroud)

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
Run Code Online (Sandbox Code Playgroud)

如果它没有选择支持不点击每个按钮点击警报视图?

简介旁白:我意识到UIAlertView的设计目的.但我的目的是允许用户在应用程序退出之前将一些文本复制到粘贴板(这在警报视图被取消时会自动发生.

iphone cocoa-touch uialertview

27
推荐指数
1
解决办法
2万
查看次数