如果您为非技术人员编程,您会发现自己处于高风险,用户不会阅读您措辞谨慎且具有启发性的错误消息,而只需点击第一个按钮就可以沮丧地耸耸肩.
所以,我想知道你可以推荐哪些好的做法来帮助用户真正阅读你的错误信息,而不是简单地放弃它.我能想到的想法会落在:
编辑:我想到的观众是一个相当广泛的用户群,不经常使用软件而且不是俘虏(即没有内部软件或狭隘的社区).在slashdot上询问了这个问题的更通用的形式,所以你可能想在那里检查一些答案.
假设我有一个列表和一个过滤功能.使用类似的东西
>>> filter(lambda x: x > 10, [1,4,12,7,42])
[12, 42]
Run Code Online (Sandbox Code Playgroud)
我可以得到符合标准的元素.是否有一个我可以使用的函数可以输出两个列表,一个元素匹配,剩下的元素之一?我可以filter()
两次调用该函数,但这有点难看:)
编辑:元素的顺序应该是守恒的,我可能多次使用相同的元素.
我的本地和默认时区是GMT +5,但是当我通过NSDate获取日期和时间时,它会返回GMT日期和时间.
例如,在设备上测试时我的代码的代码和输出为,[设备时区Islamabad GMT +5]
NSTimeZone *lo = [NSTimeZone localTimeZone];
NSLog(@" - current local timezone is %@",lo); // GMT +5
2010-12-28 20:56:11.785 Done[484:307] - current local timezone is Local Time Zone (Asia/Karachi (GMT+05:00) offset 18000)
NSTimeZone *df = [NSTimeZone defaultTimeZone];
NSLog(@" - current default timezone is %@",df); // GMT +5
2010-12-28 20:56:11.790 Done[484:307] - current default timezone is Asia/Karachi (GMT+05:00) offset 18000
Run Code Online (Sandbox Code Playgroud)
但
NSDate *cDate = [NSDate date];
NSLog(@"current date by NSDate %@",cDate); //but NSDate show GMT
2010-12-28 20:56:11.794 Done[484:307] …
Run Code Online (Sandbox Code Playgroud) 当合成的setter尝试释放未定义的myArray对象时,为什么这个公共属性初始化方案没有风险失败?或者属性对象是否自动初始化为nil,我根本不需要这样做?
@interface myClass : NSObject {
NSArray* myArray;
}
@property (nonatomic, retain) NSArray* myArray;
@end
@implementation myClass
@synthesize myArray;
-(id)init {
if ( self = [super init] ) {
self.myArray = nil;
}
return self;
}
...
Run Code Online (Sandbox Code Playgroud) 给定一个Unicode字符串,我想用生成它们的LaTeX代码替换非ASCII字符(例如,已经é
成为\'e
,并œ
成为\oe
).我将它合并到Python代码中.这应该依赖于转换表,我已经提出了以下代码,这很简单,似乎很好用:
accents = [
[ u"à", "\\`a"],
[ u"é", "\\'e"]
]
translation_table = dict([(ord(k), unicode(v)) for k, v in accents])
print u"été à l'eau".translate(translation_table)
Run Code Online (Sandbox Code Playgroud)
但是,写一个相当完整的翻译表需要我很长时间,谷歌没有多大帮助.有人有这样的事情准备好,或知道在哪里找到一个?
PS:我是Python的新手,所以我欢迎对上面代码的评论.
使用新的Xcode 4,我导入了一个Xcode 3项目.我曾经有三套不同的构建设置,分别用于"Debug","Ad hoc"和"Store".现在,我没有在新界面中找到它们.设置(如代码签名选项)仍然存在于构建设置中,但如何选择其中一个?
当我开发一个带有Xcode的本地化界面的Mac应用程序时,我倾向于修改英语资源,并且只有在完成其余的开发工作时才对它们进行本地化/翻译.在非英语系统上,当我要求Xcode运行应用程序时,它会使用我自己语言的本地化,当我想选择自己时(并且在大多数情况下选择英语).
那么,如何在调试会话期间告诉Xcode我希望应用程序使用哪种语言?
我有两个具有相同标识符的应用程序.一个用于mac app store,一个用于其他目的(用于分发到mac app store之外).而我的两个应用程序并不完全相同,两者在代码和资源方面也存在很多差异.应用程序商店版本的应用程序由"第三方Mac开发人员应用程序:公司"签署,另一个由"开发者ID应用程序:公司"签名.
我的问题是 - 门卫是否允许我的两个应用程序在10.8 OS X上运行?谢谢.
更新:由于两个应用程序具有不同的指定要求但是相同的捆绑包,它应该运行.
更新:在我的测试中,我发现两个应用程序都在我的系统和其他系统中运行.但在某些系统中,它允许mac app store应用程序启动,但对于非mac应用程序商店应用程序,它显示一条消息,它会受到损害,我们应该将其移至垃圾箱.为什么相同的构建在不同的系统中显示两种不同的行为.
cocoa code-signing objective-c mac-app-store osx-mountain-lion
我开始在XML档案上使用boost :: serialization.我可以生成和读取数据,但是当我手工修改XML并交换两个标签时,它"无法失败"(即它会愉快地进行).
这是一个小的,自我完整的例子,展示了我所看到的:
#include <iostream>
#include <fstream>
#include <boost/archive/xml_oarchive.hpp>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/serialization/nvp.hpp>
#include <boost/serialization/split_member.hpp>
using namespace std;
int main (void)
{
boost::archive::xml_oarchive oa (cout);
static const string producer = "XXX", version = "0.0.1";
oa << boost::serialization::make_nvp ("producer", producer);
oa << boost::serialization::make_nvp ("producer_version", version);
}
Run Code Online (Sandbox Code Playgroud)
这会将XML写入标准输出,其中包含:
<producer>XXX</producer>
<producer_version>0.0.1</producer_version>
Run Code Online (Sandbox Code Playgroud)
现在,我用一个阅读器替换main函数中的所有代码:
boost::archive::xml_iarchive ia (cin);
string producer, version;
ia >> boost::serialization::make_nvp ("producer", producer);
ia >> boost::serialization::make_nvp ("producer_version", version);
cout << producer << " " << version << endl;
Run Code Online (Sandbox Code Playgroud)
当输入前一个输出时,它按预期工作(输出"XXX 0.0.1").但是,如果我提供XML,其中我更改了两行"producer"和"producer_version"的顺序,它仍然运行并输出"0.0.1 XXX".
因此,它无法识别标签没有预期的名称,只是继续. …
ios ×2
iphone ×2
objective-c ×2
python ×2
auto-update ×1
boost ×1
c++ ×1
cocoa ×1
code-signing ×1
diacritics ×1
filter ×1
latex ×1
localization ×1
qt ×1
ui-design ×1
unicode ×1
xcode ×1
xcode4 ×1