我正在尝试在cocos2d中编写一个基本测试"游戏状态"单例,但由于某些原因加载应用程序时,从不调用initWithCoder.任何帮助将不胜感激,谢谢.
这是我的单身GameState.h:
#import "cocos2d.h"
@interface GameState : NSObject <NSCoding>
{
NSInteger level, score;
Boolean seenInstructions;
}
@property (readwrite) NSInteger level;
@property (readwrite) NSInteger score;
@property (readwrite) Boolean seenInstructions;
+(GameState *) sharedState;
+(void) loadState;
+(void) saveState;
@end
Run Code Online (Sandbox Code Playgroud)
...和GameState.m:
#import "GameState.h"
#import "Constants.h"
@implementation GameState
static GameState *sharedState = nil;
@synthesize level, score, seenInstructions;
-(void)dealloc {
[super dealloc];
}
-(id)init {
if(!(self = [super init]))
return nil;
level = 1;
score = 0;
seenInstructions = NO;
return self;
}
+(void)loadState {
@synchronized([GameState …Run Code Online (Sandbox Code Playgroud) singleton nskeyedarchiver cocos2d-iphone nsdata iphone-sdk-3.0
我可以使用__LINE__方法参数就好了,但我想在一个使用字符串的函数中使用它.
比如说我有这个:
11 string myTest()
12 {
13 if(!testCondition)
14 return logError("testcondition failed");
15 }
Run Code Online (Sandbox Code Playgroud)
我希望函数的结果是:
"myTest第14行:testcondition失败"
我怎么写logError?它是否必须是一个宏观的怪物?
假设我有一个线程安全的Things集合(称之为ThingList),我想添加以下函数.
Thing * ThingList::findByName(string name)
{
return &item[name]; // or something similar..
}
Run Code Online (Sandbox Code Playgroud)
但通过这样做,我已将线程安全的责任委托给调用代码,该代码必须执行以下操作:
try
{
list.lock(); // NEEDED FOR THREAD SAFETY
Thing *foo = list.findByName("wibble");
foo->Bar = 123;
list.unlock();
}
catch (...)
{
list.unlock();
throw;
}
Run Code Online (Sandbox Code Playgroud)
显然,RAII锁定/解锁对象会简化/删除try/catch/unlocks,但是调用者仍然很容易忘记.
我看过几个替代方案:
ThingList::setItemBar(string name, int value)- 很好,但这些往往会增殖处理这个问题的正确方法是什么?
在Perl中执行base36算法的最佳方法是什么?
更具体地说,我需要能够做到以下几点:
在基数为36的正N位数字上运算(例如数字为0-9 AZ)
N是有限的,比如说9
提供基本算术,至少以下3:
加法(A + B)
减法(AB)
整个部门,例如楼层(A/B).
严格来说,我真的不需要base10转换能力 - 数字将100%的时间在base36中.所以我很好,如果解决方案没有实现从base36转换回base10,反之亦然.
我不太关心解决方案是否是暴力"转换为基础10并返回"或转换为二进制,或者一些更优雅的方法"本地"执行baseN操作(如上所述,往返于base10转换不是需求).我唯一的三个注意事项是:
它符合上述最低规格
这是"标准".目前我们正在使用基于base10转换的老本土模块,这种模块是手动完成的,这种模块很糟糕,很糟糕.
我宁愿用一些常用的CPAN解决方案取而代之,而不是从头开始重新编写自己的自行车,但如果不存在更好的标准可能性,我完全有能力构建它.
它必须是快速的(虽然不是闪电般快).需要1秒才能总结2个9位数的base36数字的东西比我自己可以滚动的任何东西都差:)
PS只是提供一些上下文,以防人们决定解决我的XY问题,除了回答上面的技术问题:)
我们有一个相当大的树(作为一堆边存储在DB中),我们需要在该树的子集上叠加顺序.树的尺寸在深度和宽度方面都很大.树非常积极地更新(插入和删除以及分支移动).
目前这是通过具有3列的第二个表来完成的:parent_vertex, child_vertex, local_order其中local_order是由A-Z0-9构建的9个字符的字符串(例如,基数36的数字).
其他考虑因素
要求每个孩子的本地订单是唯一的(并且每个父母显然是唯一的),
父母的任何完整的重新排序都有些昂贵,因此实现是尝试为具有X个子节点的父节点分配在0到36**10-1之间有些均匀分布的顺序,因此几乎没有树插入导致完全重新排序.
我需要进行以下查询并提取按日分组的订单总数和总和.我正在使用时间戳存储所有内容.
SELECT
COUNT(id) as order_count,
SUM(price + shipping_price) as order_sum,
DAY(FROM_UNIXTIME(created)) as day
FROM `order`
WHERE '.implode(' AND ', $where).'
Run Code Online (Sandbox Code Playgroud)
我需要在DAY进行分组,但是当我为上周末的销售工作时,它需要我的order_count并将其设为1而不是3.我如何提取按天分组的上述值?
注意:implode仅用于定义时间段(WHERE创建> = TIMESTAMP AND <= TIMESTAMP)
更新
没有GROUP BY day
Array (
[order_count] => 3
[order_sum] => 69.70
[day] => 17
)
Run Code Online (Sandbox Code Playgroud)
使用GROUP BY day
Array (
[order_count] => 1
[order_sum] => 24.90
[day] => 17
)
Run Code Online (Sandbox Code Playgroud)
我需要此查询来返回每天有销售,订单数量和销售额的总和.我在这里错过了一块拼图....
我目前正在使用magento管理界面,尝试在"管理产品"中上传图像,我在浏览文件并单击"上传文件"后收到错误"文件未上传".我看过其他论坛,我看到的主要解决方案是确保php.ini有以下几行...
magic_quotes_gpc = off
short_open_tag = on
extension=pdo.so
extension=pdo_mysql.so
Run Code Online (Sandbox Code Playgroud)
我有带ISAPI_Rewrite的Windows/IIS.是否有最大文件上传大小,我可以在某处更改.我正在从我当地的桌面上传大小~100kb的图片.救命!
我正在寻找一种方法来连接到MS Analysis Services OLAP多维数据集,运行MDX查询,并将结果拉入Python.换句话说,正是Excel所做的.Python中是否有解决方案让我这样做?
有类似问题的人指向Django的ORM.尽管我喜欢这个框架,但这并不是我想要的.我也不是在寻找一种拉行和聚合它们的方法 - 这就是Analysis Services首先要做的事情.
想法?谢谢.
好的,所以我的数据模型中有两个实体(比如entityA和entityB),这两个实体之间的关系都是多对多的.
我已经设置了一个NSFetchedResultsController来获取一堆entityA.现在,我正在尝试将tableview的节名称作为entityB的标题.
sectionNameKeyPath:@"entityB.title"
Run Code Online (Sandbox Code Playgroud)
现在这会导致一个问题,即从该关系返回的节名称似乎是({title1})或({title1,title2 ... titleN}),这显然取决于涉及多少个不同的entityB.这在tableview中看起来不太好,并且不会按照我的意愿对对象进行分组.
我想要的是每个entityB标题的一个部分,其中entityA出现在每个部分下,必要时在多个部分下.我不知道我应该如何实现这一点,我是否需要更新谓词以使实体多次出现,或者是否需要更新section和header函数来进行一些处理,因为控制器循环通过对象.
任何帮助表示赞赏:)
谢谢
我想知道是否有关于在rails应用程序中存储全局设置的最佳实践.我的意思是:我有一些可能会改变的全局变量,但不太可能,因为它们被如此多地使用而将它们存储在DB中似乎是不合适的.例如,我有SYSTEM_EMAIL&SYSTEM_EMAIL_SIGNATURE和SYSTEM_STORAGE_ROOT.
现在我将它们保存在environment.rb中,但我不确定这是否适合存储它们.
谢谢
编辑:
接受的答案仍然适当,但我转而使用 https://github.com/markbates/configatron,还有其他选择,但我最喜欢configatron.