小编Tim*_*mbo的帖子

Swift布尔文字(Obj-C @YES @NO等价物)

在Objective-C中,您可以键入@YES而不是[NSNumber numberWithBOOL:YES].这使得代码更加整洁.

在斯威夫特,我不得不写NSNumber.numberWithBool(true),这有点难看.

是否有一个相当于@YES@NO斯威夫特?

在此先感谢您的帮助!

swift

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

核心数据:"存储在外部记录文件中"与"允许外部存储"

我实际上有一些与iOS上的Core Data实体属性设置相关的问题:

  1. 仅针对Spotlight集成存储"外部记录文件"吗?
  2. 仅适用于Mac OS的"存储在外部记录文件中"吗?
  3. 在iOS模拟器上,究竟存储了"外部记录文件"?

不要将这些问题与二进制数据属性设置"允许外部存储"混淆.据我所知,设置会将数据> 1MB放在商店外面.

  1. 在iOS模拟器上,存储"允许外部存储"的位置?

提前感谢你的帮助!

core-data

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

瞬态sectionNameKeyPath和NSSortDescriptor NSFetchedResultsController

我在Core Data中有一个任务列表.我使用NSFetchedResultsController将它们提取到UITableView中.

我需要自定义订单中的自定义部分:

  1. 逾期
  2. 活性
  3. 正在进行
  4. 延后
  5. 已完成

为了确定任务应该进入哪个部分,我使用基于相对对象中的其他属性动态计算的派生瞬态属性.

遗憾的是,您无法将派生值作为获取请求使用的排序描述符传递.这是因为fetch依赖于已经要求获取的数据.鸡蛋.

我理解为什么我不能这样做,这无助于我解决问题!

我试过了:

  • 将NSFetchedResultsController子类化为" 自定义节和索引标题创建 ".也许我做错了,但这只是改变了部分的名称和顺序,而不是那些部分有多少东西(这是关键的).

  • 每个部分填充数组并将它们提供给表(笨重,缓慢但完全有效).

  • 剔除正在进行和推迟的任务(有效但不理想).这样我可以按dueDate排序并通过瞬态值驱动sectionNameKeyPath.

有没有人有更好的想法?有很多问题就像这个问题一样,但没有一个问题可以解决.

提前致谢!

干杯

iphone xcode objective-c nsfetchedresultscontroller

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

NSTimer仅重复x次,然后在无效时调用选择器

主要是我正在寻找一种方法来创建一个nstimer scheduledTimerWithTimeInterval,它每3秒重复10次,然后就像无重复计时器一样无效.这可能吗?理想情况下,一旦定时器无效,另外的选择器将会触发

objective-c

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

如何在调用并行Lambda函数的AWS Step Function上禁用(或重定向)日志记录

我正在运行带有并行执行分支的AWS Step函数。

每个分支都单独成功,但是整个功能失败并显示以下错误:

States.DataLimitExceeded-状态/任务返回的结果大小超过了最大字符服务限制数。

然后,我从AWS上找到了一篇描述此问题的文章,并提出了以下解决方法:

https://docs.aws.amazon.com/step-functions/latest/dg/connect-lambda.html

那篇文章说:

Lambda调用API默认情况下在响应中包含日志。工作流中的多个Lambda调用会触发States.DataLimitExceeded错误。为避免这种情况,在调用Lambda函数时,请将“ LogType” =“ None”作为参数包含在内。

我的问题是在哪里正是我把它?我尝试将其放在状态机定义中的各个位置,但是出现以下错误:

步骤功能不支持“ LogType”字段

该错误似乎与支持文章相反,所以也许我做错了!

任何建议表示赞赏,在此先感谢!

干杯

更新1: 显然,这是一个并行函数,具有26个并行分支。每个分支的输出均较小,如下例所示。此数据中最大的项是LogResult,它(在对base64进行解码时)仅是账单信息。我认为此信息乘以26导致了错误,所以我只想关闭此LogResult!

{
  "ExecutedVersion": "$LATEST",
  "LogResult": "U1RBUlQgUmVxdWVzdElkOiBlODJjZTRkOS0zMjk2LTRlNDctYjcyZC1iYmEwMzI1YmM3MGUgVmVyc2lvbjogJExBVEVTVApFTkQgUmVxdWVzdElkOiBlODJjZTRkOS0zMjk2LTRlNDctYjcyZC1iYmEwMzI1YmM3MGUKUkVQT1JUIFJlcXVlc3RJZDogZTgyY2U0ZDktMzI5Ni00ZTQ3LWI3MmQtYmJhMDMyNWJjNzBlCUR1cmF0aW9uOiA3NzI5Ljc2IG1zCUJpbGxlZCBEdXJhdGlvbjogNzgwMCBtcwlNZW1vcnkgU2l6ZTogMTAyNCBNQglNYXggTWVtb3J5IFVzZWQ6IDEwNCBNQglJbml0IER1cmF0aW9uOiAxMTY0Ljc3IG1zCQo=",
  "Payload": {
    "statusCode": 200,
    "body": {
      "signs": 63,
      "nil": ""
    }
  },
  "SdkHttpMetadata": {
    "HttpHeaders": {
      "Connection": "keep-alive",
      "Content-Length": "53",
      "Content-Type": "application/json",
      "Date": "Thu, 21 Nov 2019 04:00:42 GMT",
      "X-Amz-Executed-Version": "$LATEST",
      "X-Amz-Log-Result": "U1RBUlQgUmVxdWVzdElkOiBlODJjZTRkOS0zMjk2LTRlNDctYjcyZC1iYmEwMzI1YmM3MGUgVmVyc2lvbjogJExBVEVTVApFTkQgUmVxdWVzdElkOiBlODJjZTRkOS0zMjk2LTRlNDctYjcyZC1iYmEwMzI1YmM3MGUKUkVQT1JUIFJlcXVlc3RJZDogZTgyY2U0ZDktMzI5Ni00ZTQ3LWI3MmQtYmJhMDMyNWJjNzBlCUR1cmF0aW9uOiA3NzI5Ljc2IG1zCUJpbGxlZCBEdXJhdGlvbjogNzgwMCBtcwlNZW1vcnkgU2l6ZTogMTAyNCBNQglNYXggTWVtb3J5IFVzZWQ6IDEwNCBNQglJbml0IER1cmF0aW9uOiAxMTY0Ljc3IG1zCQo=",
      "x-amzn-Remapped-Content-Length": "0",
      "x-amzn-RequestId": "e82ce4d9-3296-4e47-b72d-bba0325bc70e",
      "X-Amzn-Trace-Id": "root=1-5dd60be1-47c4669ce54d5208b92b52a4;sampled=0"
    },
    "HttpStatusCode": 200
  },
  "SdkResponseMetadata": {
    "RequestId": "e82ce4d9-3296-4e47-b72d-bba0325bc70e"
  },
  "StatusCode": 200
}
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-lambda aws-step-functions

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

在触发之前停止'performSelector afterDelay'

我使用以下代码在4秒延迟后开始重复NSTimer:

- (void)viewDidLoad {
    [self performSelector:@selector(startTimer) withObject:self afterDelay:4];
}
- (void)startTimer {
    NSTimer *mytimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(doSomething) userInfo:nil repeats:YES];
}
- (void)doSomething {
    NSLog(@"What up!");
}
Run Code Online (Sandbox Code Playgroud)

问题是我可能需要在4秒钟之前取消调用startTimer.有办法做到这一点吗?我实际上更喜欢不首先使用performSelector(看起来很乱).如果只有NSTimer有这样的东西......

NSTimer*mytimer = [NSTimer scheduledTimerWithTimeInterval:1.0 afterDelay:4.0 target:self selector:@selector(doSomething)userInfo:nil repeats:YES];

...然后那将是完美的,因为我可以调用以下内容:

[myTimer invalidate];

任何帮助或提示非常感谢=)

PS我在NSObject类引用中找到了一个名为cancelPreviousPerformRequestsWithTarget的东西.似乎不是我可以从此代码运行的地方调用的方法.如果这回到了正确的轨道,欢迎您的反馈!

iphone objective-c

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

两个UISplitViewControllers,1个(共享)详细信息视图

设置场景我有:

  • 带有2个选项卡的选项卡视图控制器
  • 每个选项卡都有一个Split View Controller
  • 我想将每个拆分视图控制器的详细信息视图指向SAME视图.

我附上了一个非常简单的示例项目,展示了这个问题.

在iPad 5.1 Sim中运行它,观察每个选项卡.一个显示共享详细信息视图,一个失败.

NSLog调试报告第二个拆分视图具有NULL详细信息视图控制器:

2012-04-28 07:21:55.451 svcTest[14597:f803] tabBarController viewControllers = (
    "UISplitViewController: 0x6a36100",
    "UISplitViewController: 0x6a39ab0"
)
2012-04-28 07:21:55.455 svcTest[14597:f803] svcA.viewControllers = (
    "UINavigationController: 0x6a36250",
    "UIViewController: 0x6a38720"
)
2012-04-28 07:21:55.457 svcTest[14597:f803] svcB.viewControllers = (
    "UINavigationController: 0x6a39cc0"
)

单击第二个选项卡时出现此错误:

2012-04-28 07:22:58.457 svcTest[14597:f803] Splitview controller  is expected to have a detail children before its used!
2012-04-28 07:22:58.459 svcTest[14597:f803] Split view controller  should have its children set before layout!

看一下故事板我已经设置了详细视图,所以这让我很困惑.

故事板

任何有助于将此"共享"视图显示在每个标签上的帮助都非常感谢.

谢谢!

objective-c ipad uisplitviewcontroller uistoryboard uistoryboardsegue

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

CKQueryOperation可见性,取消和超时可能性

我的应用程序需要使用CKDatabase运行CKQueryOperation.这需要网络访问并不总是可用.

一旦我将CKQueryOperation添加到CKDatabase,这是关于我的控件停止的位置.

有没有办法可以:

  1. 查看特定于CKDatabase的所有待处理操作.
  2. 将操作添加到CKDatabase后取消操作?
  3. 设置完成超时,以便在网络阻止完成时操作不会保持挂起状态?

我知道我可以用CKDatabase performQuery做到这一点但是我希望尽可能使用操作,提前感谢您的帮助!

ios icloud swift cloudkit

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

从NSTimer选择器访问实例变量

首先是新手问题:选择器和方法之间有什么区别?

其次是新手问题(谁会想到):我需要基于实例变量循环一些代码并在循环之间暂停,直到满足某些条件(当然基于实例变量).我看着睡觉,我看着NSThread.在通过这些选项进行的两次讨论中,很多人问我为什么不使用NSTimer,所以我在这里.

好的,这很简单,让方法(选择器?)按计划触发.我遇到的问题是我不知道如何在代码NSTimer触发时看到我在计时器外设置的实例变量.我需要从NSTimer选择器代码中看到这些变量,因为我1)将更新它们的值,2)将根据这些值设置标签.

这里有一些代码显示了这个概念......最终我也基于myVariable使定时器无效,但是为了清晰代码,我已经排除了它.

MyClass *aMyClassInstance = [MyClass new]; 
[aMyClassInstance setMyVariable:0];
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(doStuff) userInfo:nil repeats:YES];
[NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(doSomeOtherStuff) userInfo:nil repeats:YES];

- (void) doStuff {
        [aMyClassInstance setMyVariable:11]; //  don't actually have access to set aMyClassInstance.myVariable
        [self updateSomeUILabel:[NSNumber numberWithInt:aMyClassInstance.myVariable]];  // don't actually have access to aMyClassInstance.myVariable
}

- (void) doSomeOtherStuff {
        [aMyClassInstance setMyVariable:22]; //  don't actually have access to set aMyClassInstance.myVariable
        [self updateSomeUILabel:[NSNumber numberWithInt:aMyClassInstance.myVariable]];  // don't actually have access to aMyClassInstance.myVariable
}

- (void) updateSomeUILabel:(NSNumber *)arg{
        int value = …
Run Code Online (Sandbox Code Playgroud)

objective-c

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

将CCMenu与网格对齐

有没有人知道让CCMenuItems数组与网格对齐的最佳实践方法?这是一个cocos2d问题

例如 :

int levelCount = 10;

CCMenu *menuArray = [CCMenu menuWithItems:nil];

for (int x = 1; x<=levelCount; x++) {
    CCLOG(@"Creating level icon for Level %i", x);     
    [menuArray addChild:[CCMenuItemImage itemFromNormalImage:@"Button2n.png" 
                                               selectedImage:@"Button2s.png" 
                                                      target:self 
                                                    selector:@selector(onPlay:)]];

}

[menuArray alignToGridWouldbeGreat????!!!!];
[self addChild:menuArray];
Run Code Online (Sandbox Code Playgroud)

我可以垂直,水平,以列或行对齐,但不能包装列或行配置.

提前致谢!

objective-c cocos2d-iphone

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

将实例变量传递给在CCMenuItemImage中配置的选择器

我需要一只手将变量传递给CCMenuItemImage中配置的选择器,如果可能的话.好像它应该是,我只是无法解决它!

这是我想要实现的目标:

  1. 使用for/loop创建说20个游戏关卡项目的菜单.没问题.
  2. 在for/loop中,指定递增变量.没问题.
  3. 将递增变量传递给CCMenuItemImage中指定的选择器.问题!
  4. 使用递增变量来确定在点击特定菜单项时要加载的游戏级别.没有#3的问题解决了!

无论如何,使用(为清晰起见)代码:

这是for/loop中用于创建菜单项的命令

CCMenuItemImage *image = [CCMenuItemImage itemFromNormalImage:@"Normal.png" selectedImage:@"Selected.png" target:self selector:@selector(onSelect:)];
Run Code Online (Sandbox Code Playgroud)

现在正如您在上面的代码片段中看到的那样,没有空间可以说'userinfo',就像NSTimer类为此目的提供的那样.

理想情况下,我不是将每个CCMenuItemImage指向我无法传递变量的同一个选择器,而是实际上更愿意调用下面这样的方法.int表示在点击CCMenuItemImage时应加载的游戏关卡:

- (void)onSelectWithStage:(int)selectedStage {

// write the selected stage to the GameData.xml

    [SceneManager goLevelSelect];
}
Run Code Online (Sandbox Code Playgroud)

无论如何,我认为这几乎总结了这个问题.希望我错过了一些明显的东西:)

在此先感谢您的时间

objective-c cocos2d-iphone

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

在支持ARC的iOS5应用程序中替换NSZoneMalloc的使用

我正在尝试修改一些使用NSZoneMalloc的旧代码.我正在使用它的项目启用了ARC,不允许使用NSZoneMalloc.

令人讨厌的代码行是:

x = NSZoneMalloc([self zone], sizeof(*x));
Run Code Online (Sandbox Code Playgroud)

是否有任何与ARC相同的代码可以使错误消失?说实话,我真的不明白记忆区划.如果这还不够,请告诉我.

提前致谢

iphone objective-c ios ios5 automatic-ref-counting

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