小编dev*_*os1的帖子

如何使用JSONModel将NSArray序列化为JSON

奇怪的是,似乎没有任何公共方法来序列化数组,但它显然可以在序列化数组属性时执行.我有一个带有数组属性的JSONModel继承类.我想获得该属性的JSON文本表示,而不是整个对象.

我不介意修改源代码,但是首先要了解哪些内容.

另一个想法是将每个对象单独序列化为JSON并将它们包装在中[,].

objective-c nsarray jsonmodel

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

如何在viewDidLayoutSubviews中获得正确的视图高度?

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    NSLog(@"viewDidLayoutSubviews view.height: %f", self.view.frame.size.height);
}
Run Code Online (Sandbox Code Playgroud)

在上面的,view.height始终 1024,无论设备处于什么方位,即使旋转设备会导致viewDidLayoutSubviews被调用,它仍然会输出1024.

然而,这种观点很好.我错过了什么?

cocoa-touch objective-c ios viewdidlayoutsubviews

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

如果失败,在Bash中执行一行而不中止?

在bash脚本中是否有一种通用的方法来"尝试"某些东西,但如果失败则会继续?其他语言中的模拟将包装在try/catch中并忽略异常.

具体来说,我正在尝试获取可选的卫星脚本文件:

. $OPTIONAL_PATH
Run Code Online (Sandbox Code Playgroud)

但是在执行此操作时,如果$OPTIONAL_PATH不存在,整个脚本将停止运行.

我知道我可以在采购之前检查文件是否存在,但我很好奇是否有一个可以使用的通用可重用机制,它会忽略错误而不会停止.

更新:显然这不是正常行为.我不确定为什么会这样.我没有明确地调用set -e任何地方($-hB),但它停止了错误.这是我看到的输出:

./script.sh: line 36: projects/mobile.sh: No such file or directory
Run Code Online (Sandbox Code Playgroud)

echo "test"在源代码行之后立即添加了一个,但它从不打印,因此在该行退出之后不会发生任何事情.我正在运行Mac OS 10.9.

更新2:没关系,确实是shebanged #!/bin/sh而不是#!/bin/bash.谢谢你提供的信息,Kaz.

bash

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

在iOS/WKWebView上随机渲染SVG

在我们的iOS应用程序中显示SVG图标时,我们遇到了奇怪的间歇性(非常偶然的)渲染故障WKWebView.

当它确实发生时,似乎可能与CSS有关,因为如果我在调试页面时在Safari中更改一些随机(甚至完全不相关)的CSS类,则故障可能会消失或随机返回.虽然似乎没有押韵也没有理由,但我们还没有办法可靠地再现它.

只是想知道是否有人有任何想法或可能曾经遇到过这个.

在此输入图像描述

你可以看到有几种故障:显而易见的乱码图标,但也只有一个 Metrics选项卡.那部分特别奇怪,因为"Metrics"标签只是文字,甚至不是图标的一部分!

如果我调试元素,它看起来应该在调试器中.元素具有正确的背景图像URL,标签应该是它应该是(我甚至可以将鼠标悬停在元素树中的标签上,它将突出显示页面上的标签,即使文本完全错误).似乎在某种程度上完全搞砸了实际的渲染.

css svg ios wkwebview

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

在ASP.NET MVC中使用多个Controller类有什么好处?

我只是在学习ASP.NET MVC的基础知识,并且想知道在多个控制器之间分解网站逻辑的好处是什么,而不仅仅是拥有一个运行整个网站的Controller类,除了简单地组织代码.(在我看来,由于关注点分离,后者的好处不应该足以通过URL影响最终用户:站点的实现细节不应该反映在站点使用的URL中,不是吗?)

我一直在阅读的控制器上的一些示例显示了"Product"或"User"或"Post"等不同的控制器.这些明确对应于对象类,后面跟着可以采取的操作(现在看到url,我看到stackoverflow.com/questions/ask).

将网站拆分为单独的控制器类(例如QuestionsController)与仅具有单个默认控制器并在其中处理这些操作是否有优势,例如stackoverflow.com/ask-question(除了它看起来有点丑陋).

我问,因为我对我的网站RESTful并不特别感兴趣(我对它进行了一些调查,但认为它太有限)而是支持查询字符串参数来传递有关请求的信息.因此,将URL拆分为控制器和动作的概念对我来说没有意义,因为动作和类信息将在查询字符串中表示.

最后,我更喜欢简单的网址,比如www.mysite.com/about和www.mysite.com/home/about(这甚至意味着什么?),再次让我想知道多个控制器的真正意义点是什么.

model-view-controller asp.net-mvc controller

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

为什么我不能在 ARC 中使用自定义颜色创建 CAGradientLayer?

在我的表格视图控制器的以下代码中,如果我使用“库存”颜色,[UIColor blueColor]它可以正常工作,但是如果我尝试使用 RGBA 值创建自定义颜色,它会失败并且除了纯黑色之外不绘制任何东西。

这是因为 ARC 在可以使用之前释放了 CGColorRef 吗?我怎样才能让它与自定义颜色一起工作?

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    [cell setBackgroundColor:[UIColor clearColor]];

    CAGradientLayer *selectedGrad = [CAGradientLayer layer];
    selectedGrad.frame = cell.bounds;

    UIColor* colorOne = [UIColor blueColor];//[UIColor colorWithRed:96/255 green:157/255 blue:227/255 alpha:1];
    UIColor* colorTwo = [UIColor greenColor];//[UIColor colorWithRed:54/255 green:123/255 blue:201/255 alpha:1];

    NSArray* colors = [NSArray arrayWithObjects:(id)colorOne.CGColor, colorTwo.CGColor, nil];

    selectedGrad.colors = colors;
    selectedGrad.locations = [NSArray arrayWithObjects:@(0.0), @(1.0), nil];

    [cell setSelectedBackgroundView:[[UIView alloc] init]];
    [cell.selectedBackgroundView.layer insertSublayer:selectedGrad atIndex:0];
}
Run Code Online (Sandbox Code Playgroud)

uitableview ios automatic-ref-counting cagradientlayer

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

XAML ContentControl 子项未拉伸以填充 ContentControl

我有一件非常简单的事情,我正在尝试做,但它不起作用,我试图了解我错过了什么。

所以我<ContentControl>在父 UI 中有一个,并将其Content属性绑定到控制器上的 DependencyProperty:

<ContentControl x:Name="rightPanel">
Run Code Online (Sandbox Code Playgroud)

(它位于行高设置为 的 Grid 内*。)

然后我实例化一个包含 Grid 的 UserControl(因此应该拉伸以填充可用空间),但是每当我将它嵌入到 UserControl 中时,它就会失去所有“拉伸”并开始缩小,就像它在 StackPanel 中一样。

<UserControl
    *namespace snip*>
    <Grid Background="LightGreen">
        <TextBlock Text="Oh happy days..."/>
    </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

var innerPage = new MyUserControl1(); // the above <UserControl>
this.rightPanel.Content = innerPage;
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我不明白为什么会这样。我用UserControls 和Pages都试过了,没有区别。我错过了什么?

xaml uwp

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

Swift 3错误以及其他数据

在Swift 3中,推荐的方法是将(可能很多)其他信息放入错误/异常中,以使捕获器可以用来解决/处理问题?在我所看到的所有示例中,它们都将enums与关联的值一起使用,对于很多信息而言,这似乎过于繁琐/冗长。

具体来说,我正在编写一个简单的解析器,并希望有一个位置来存储受影响的行号和列号(以及将来可能的其他信息),但是不要求每个处理程序都将其显式声明为关联值,因为这将是一个负担。呼叫者,召集者。

在这一点上,我基本上可以看到两种方法,这两种方法似乎都不是特别优雅,并且两种方法都需要定义两个不同的东西:

  1. 定义一个enum表示错误类型的外部错误,并针对每种情况接受一个参数,该参数是一个包含其他异常详细信息的对象,或者
  2. 将对象用作实际对象,Error并从传递一个实例enum到其构造函数,以表示实际的错误情况。

尽管这两种方法都采用两个独立的概念来表示一个简单的想法,这对我来说有点不干净,但我只是想知道是否有更好的方法可以做到这一点。

是否存在处理可能包含大量附加信息的错误的约定或推荐方法?

error-handling swift swift3

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

当只有一个线程出现在Visual Studio中时,如何调试死锁?

我的应用程序在调用时无限期地阻塞lock ( obj ),但线程窗口中没有其他线程可以根据需要进行任何代码浏览.是不是有必要涉及另一个线程?它为什么不出现,它可能是什么原因没有出现?

更新:我想我弄明白是什么导致了它.我有这种hackish阻止,我会Wait()ManualResetEvent内部两个锁.问题是我需要在等待之前释放这些锁,以便其他线程可以使用它们,所以我做了类似这样的事情:

lock ( one ) {
    lock ( two ) {
        ...
        Monitor.Exit( two );
        Monitor.Exit( one );
        syncEvent.Wait();
        Monitor.Enter( one );
        Monitor.Enter( two );
    }
}
Run Code Online (Sandbox Code Playgroud)

我不指望的是,Monitor.Exit()实际上只减少内部递归计数器,并且可能从已经同步的块调用该方法; 因此锁实际上并没有被释放.

我想从一开始就是一个坏主意.我刚刚将呼叫转移到Wait()锁定区块之外,现在似乎工作正常.

感谢您的见解.

虽然,现在我考虑一下,如果从其中一个锁上的代码同步调用该方法,则在调用Wait发生时仍然不会释放该方法.因此,我想要小心,永远不要从同步块中调用它.

.net c# concurrency deadlock visual-studio

0
推荐指数
1
解决办法
670
查看次数

在Objective-C中动态添加方法到对象?

我想在Objective-C中执行此JavaScript:

var obj = {};
obj.myFunc = function() { ... };
Run Code Online (Sandbox Code Playgroud)

这可能吗?或者只能将方法添加到Objective-C中的而不是对象?即我发现class_addMethod,但我想要一种方法在同一个类的不同实例上使用相同选择器的不同实现.

这可能还是我SOL?

reflection dynamic objective-c

0
推荐指数
1
解决办法
508
查看次数