我有这个测试WatchKit扩展项目,调用WKInterfaceController openParentApplication:以获取要显示的信息 主ios App然后查询数据库,以便将数据发送回手表。
if ([userInfo objectForKey:@"categoryRequest"])
{
BFLiteDatabase * db = [BFDatabase getDatabase];
NSMutableArray * categories = [NSMutableArray new];
BFLiteCommand * cmd = [db commandFromString:[BFCategory selectStatement]];
while([cmd readNext])
{
[categories addObject: [[BFShoppingCategory alloc] initFromCommand:cmd]];
}
NSDictionary * result = [[NSDictionary alloc] initWithDictionary:[NSDictionary dictionaryWithObject:[NSArray arrayWithArray:categories] forKey:@"categoryResult"]];
reply(result);
}
但是一旦我回复,我就会得到一个sigbat,并且我已经将它缩小到我将nsarray分配给字典值的值这一事实。
我无法理解为什么这是非法的,什么是最好的解决方法?
关心Christian Andersen
答案 0 :(得分:1)
除了你为了创造最后的NSDictionary
所做的太多工作之外,我无法发现任何明显的错误。
这将是一种更清洁的方式来接近它:
NSDictionary *result = @{@"categoryResult":[NSArray arrayWithArray:categories]};
答案 1 :(得分:1)
答案 2 :(得分:0)
好的我发现问题我认为问题是categories数组包含BFShoppingCategory对象,我认为这些对象不是serilizeble所以不使用对象我将只传递基本数组,这应该工作