小编Mon*_*olo的帖子

KVC vs快速枚举

以下哪项更快,为什么?

CGFloat sum = 0;
for (UIView *v in self.subviews)
    sum += v.frame.size.height;
Run Code Online (Sandbox Code Playgroud)

要么

CGFloat sum = [[self.subviews valueForKeyPath:@"@sum.frame.size.height"] floatValue];
Run Code Online (Sandbox Code Playgroud)

iphone objective-c ipad ios kvc

13
推荐指数
2
解决办法
711
查看次数

我怎样才能最容易地在Cocoa中展平三维数组?

假设我有一个这样的数组:

NSArray *threeDimensionalArray = @[
 @[     
     @[ @"Peter", @"Paul", @"Mary" ], @[ @"Joe", @"Jane" ]
  ],
 @[
     @[ @"Alice", @"Bob" ]
  ]
];
Run Code Online (Sandbox Code Playgroud)

我希望它成为:

@[ @"Peter", @"Paul", @"Mary", @"Joe", @"Jane", @"Alice", @"Bob" ]
Run Code Online (Sandbox Code Playgroud)

我怎样才能最轻松地创建这个扁平阵列?

cocoa objective-c

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

在执行Objective-C块时调用super

在Objective-C块的实现中调用超级方法吗?

当我在super上调用一个方法时,会抛出一个EXC_BAD_ACCESS错误但是只要我将这些调用改为[super methodToCall],[self methodToCall]并让消息向上移动响应者链就可以了.

-methodToCall在该类的实例中没有该块存在的实现,但是在超类中有一个(即,自己继承自的类).

我只是好奇地了解为什么在一个块的实现中调用一个方法在一开始是一个问题(技术上),所以我可以在将来避免它.我怀疑它与块中如何捕获变量以及堆栈和堆有关,但我真的没有具体的想法.

注意:在块存储在属性中之后几秒钟就会调用块实现代码,该属性使用copy,所以我不认为这是块的生命周期的问题,所有看起来都没问题.此外,这只是在iPhone设备(3G)上崩溃,但在iPhone模拟器中没有崩溃.

结果EXC_BAD_ACCESS:

[self retrieveItemsForId:idString completionHandler:^(NSError *error) {
 if (!error) {
  [super didRetrieveItems];
 } else {
  [super errorRetrievingItems];
 }
}];
Run Code Online (Sandbox Code Playgroud)

完美,实现-didRetrieveItems-errorRetrievingItems超级类.

[self retrieveItemsForId:idString completionHandler:^(NSError *error) {

 if (!error) {
  [self didRetrieveItems];
 } else {
  [self errorRetrievingItems];
 }
}];
Run Code Online (Sandbox Code Playgroud)

cocoa cocoa-touch block objective-c objective-c-blocks

11
推荐指数
2
解决办法
2007
查看次数

哪个用,concat,concat_ws?在mysql中

在PHP中,我需要更改此数据

FirstName | MiddleName | LastName
---------------------------------
Robert    | Thomas     | Smith
Run Code Online (Sandbox Code Playgroud)

进入字符串"史密斯,罗伯特托马斯"

我不确定我是否需要使用join,concatconcat_ws.

我知道,如果我使用

concat_ws(', ',LastName,FirstName,MiddleName)
Run Code Online (Sandbox Code Playgroud)

然后我得到"史密斯,罗伯特,托马斯",但我需要"史密斯,罗伯特托马斯".

有什么建议?

php mysql

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

NSString通过删除初始零?

如何从中删除前导零NSString

我有:

NSString *myString;

其值如@"0002060",@"00236"@"21456".

如果它们发生,我想删除任何前导零:

例如,将前一个转换为@"2060",@"236"@"21456".

谢谢.

cocoa-touch objective-c nsstring

11
推荐指数
2
解决办法
5344
查看次数

使用NSPredicate基于多个键进行过滤(键的NOT值)

我有以下包含NSDictionary的NSArray:

NSArray *data = [[NSArray alloc] initWithObjects:
                 [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:1], @"bill", [NSNumber numberWithInt:2], @"joe", nil],
                 [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:3], @"bill", [NSNumber numberWithInt:4], @"joe", [NSNumber numberWithInt:5], @"jenny", nil],
                 [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:6], @"joe", [NSNumber numberWithInt:1], @"jenny", nil],
                 nil];
Run Code Online (Sandbox Code Playgroud)

我想创建一个过滤的NSArray,它只包含NSDictionary使用NSPredicate匹配多个"键"的对象.

例如:

  • 过滤数组只包含具有键"bill"和"joe"的NSDictionary对象[所需结果:新的NSArray将包含两个NSDictionary对象]
  • 过滤数组只包含具有键"joe"和"jenny"的NSDictionary对象[所需结果:新的NSArray将包含最后两个NSDictionary对象]

任何人都可以解释NSPredicate的格式来实现这一目标吗?

编辑:我可以使用以下方法获得与所需NSPredicate类似的结果:

NSMutableArray *filteredSet = [[NSMutableArray alloc] initWithCapacity:[data count]];
NSString *keySearch1 = [NSString stringWithString:@"bill"];
NSString *keySearch2 = [NSString stringWithString:@"joe"];

for (NSDictionary *currentDict in data){
    // objectForKey will return nil if a key doesn't exists.
    if ([currentDict objectForKey:keySearch1] …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c nsarray nspredicate

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

NSDateFormatter dateFromString返回错误的日期

我试图NSDateFormatter在我的应用程序中使用日期字符串并将其格式化为一个NSDate以便我可以进行日期比较,但是我发现当我使用dateFromString并格式化它时,日期会丢失一天.

NSString *dateString = @"02-06-2012";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:dateString];
NSLog(@"My Date = %@", dateFromString);
[dateFormatter release];
Run Code Online (Sandbox Code Playgroud)

这输出到控制台:

我的日期= 2012-06-01 23:00:00 +0000

objective-c nsdate nsdateformatter ios

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

实现Sandbox时出错:"拒绝文件读取元数据/库"

我意识到我在游戏中有点迟到准备好沙箱,但事实就是如此.

我正在为OS X 10.9开发.该应用程序显示日历事件数据,但不允许编辑,因此我启用了日历功能.

当我从Xcode运行它时,该应用程序可以很好地启用沙盒,但是当我使用开发者ID导出它时,应用程序会运行,但无法访问日历数据.更重要的是,系统永远不会要求我允许该应用访问日历数据.

当我运行应用程序时,它会启动,但不会显示任何数据.在Console中,sandboxd会抛出一堆如下所示的错误:

sandboxd: ([54]) appleeventsd(54) deny file-read-metadata /Library

sandboxd: ([54]) appleeventsd(54) deny mach-lookup com.apple.ocspd

我已经检查了应用程序的权利codesign -d --entitlements,并确认它是沙盒并具有日历权利.但是,当我在应用程序中检查它是否有权访问[EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]时,不出所料,因为它从未问过,返回EKAuthorizationStatusNotDetermined.

我觉得我遗漏了一些关于权利,代码签名或部署的非常基本的东西,但我不知道它是什么.所以我把自己放在你的集体怜悯和智慧上.

macos code-signing sandbox entitlements ekeventstore

10
推荐指数
0
解决办法
5966
查看次数

使用Xcode创建无线清单文件(.plist扩展名)

我的客户想要使用"无线安装应用"功能.

使用它,他可以直接从我的服务器下载应用程序,无需同步他的设备.我在互联网上搜索,我得到了一些信息,因为我需要两个文件

  1. 应用(.ipa)文件
  2. 清单(.plist)文件.

我知道如何创建(.ipa)文件,但我不知道(.plist)文件.如果有任何人知道如何创建(.plist)文件请分享您的想法.

iphone xcode cocoa-touch objective-c

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

在NSTextView中替换NSTextStorage的正确方法?

我正在制作一些文本查看器应用程序 目前我需要非常频繁和精确的线路处理能力,所以我想要继承NSTextStorage类.但我找不到任何方法来设置新的文本存储NSTextView.我能找到的唯一方法是

-[NSLayoutManager replaceTextStorage:]
Run Code Online (Sandbox Code Playgroud)

方法.但令人困惑的是,这是我正在寻找的.因为它似乎只是替换链接的NSLayoutManagers而不是NSTextView的文本存储.

我还考虑了子类化NSTextView和重写-textStorage方法,但如果该类不是为子类设计的,那么它将产生未定义的结果.

有人试图在NSTextView上使用自定义NSTextStorage吗?我怎样才能做到这一点?或者这是否被设计禁止?

cocoa nstextview subclassing nstextstorage

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