void CountlyRecordEventSegmentationCountSum(const char * key, const char * segmentation, int count, double sum)
{
NSString * seg = CreateNSString(segmentation);
NSArray * entries = [seg componentsSeparatedByString:@"`"];
NSDictionary * dict = [NSDictionary dictionary];
for (id entry in entries)
{
NSArray * keyValue = [entry componentsSeparatedByString:@"|"];
[dict setValue:[keyValue objectAtIndex:1] forKey:[keyValue objectAtIndex:0]];
}
[[Countly sharedInstance] recordEvent:CreateNSString(key) segmentation:dict count:count sum:sum];
}
我把“?”在标题中,因为我不完全确定问题出在上面的代码中,但这是我最好的猜测。我将Countly iOS插件与Unity整合在一起,Countly插件的其中一个方法以NSDictionary *
作为参数。因为我不知道如何将字典从C#发送到Objective-C,我将它存储在string
中,将它发送到Objective-C,然后重新创建字典(上面的代码)。EXC_BAD_ACCESS填写字典(?)
但这可能甚至不相关。我知道EXC_BAD_ACCESS
通常与不确定的资源或某事有关,所以也许你可以看到我做错了什么(我根本不知道Objective-C,只是写了插件所需的几行)。
编辑: 从统一样本:
// Converts C style string to NSString
NSString * CreateNSString (const char * string)
{
if (string)
return [NSString stringWithUTF8String: string];
else
return [NSString stringWithUTF8String: ""];
}
你用NSMutableDictionnary代替传统的NSDictionnary吗? – Kirualex
@Kirualex它不是“传统的”,它是不可变的。在初始化之后,不能修改NSDictionary的内容。应该使用NSMutableDictionary而不是 –
检查keyValue数组是否总是包含2个对象。 B'coz你正在使用objectAtIndex:1和objectAtIndex:0。所以,不确定它是否包含2个对象。检查一个条件。 –