小编tom*_*ahh的帖子

将NSString转换为NSDictionary/JSON

我将以下数据保存为NSString:

 {
    Key = ID;
    Value =         {
        Content = 268;
        Type = Text;
    };
},
    {
    Key = ContractTemplateId;
    Value =         {
        Content = 65;
        Type = Text;
    };
},
Run Code Online (Sandbox Code Playgroud)

我想将此数据转换为NSDictionary包含键值对的数据.

我首先尝试将其转换NSStringJSON对象,如下所示:

 NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试:

NSString * test = [json objectForKey:@"ID"];
NSLog(@"TEST IS %@", test);
Run Code Online (Sandbox Code Playgroud)

我收到的价值为NULL.

任何人都可以提出什么问题?

xcode json objective-c nsdictionary nsstring

79
推荐指数
3
解决办法
13万
查看次数

Spring RestTemplate调用带有错误的webservice并分析状态代码

如果请求参数正常,我设计了一个web服务来执行任务,如果请求参数错误或为空,我会返回401 Unauthorized HTTP状态代码.

我正在使用RestTemplate执行测试,如果webservice成功回复,我就能验证HTTP 200 OK状态.但是,我无法测试HTTP 401错误,因为RestTemplate它本身会抛出异常.

我的测试方法是

@Test
public void testUnauthorized()
{
    Map<String, Object> params = new HashMap<String, Object>();
    ResponseEntity response = restTemplate.postForEntity(url, params, Map.class);
    Assert.assertEquals(HttpStatus.UNAUTHORIZED, response.getStatusCode());
    Assert.assertNotNull(response.getBody());
}
Run Code Online (Sandbox Code Playgroud)

异常日志是

org.springframework.web.client.HttpClientErrorException: 401 Unauthorized
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:88)
at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:533)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:489)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:447)
at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:318)
Run Code Online (Sandbox Code Playgroud)

我如何测试webservice是否回复了HTTP状态码401?

rest spring-mvc http-status-code-401 resttemplate

30
推荐指数
4
解决办法
5万
查看次数

Haskell中的列表是归纳还是诱导?

所以我最近一直在阅读有关coinduction的内容,现在我想知道:Haskell列出了归纳还是共同?我也听说Haskell没有区分这两者,但如果是这样的话,他们怎么这样做呢?

列表是归纳定义的data [a] = [] | a : [a],但可以共同使用,ones = a:ones.我们可以创建无限列表.然而,我们可以创建有限列表.他们是哪一个?

相关的是Idris,其中类型List a严格地是归纳类型,因此仅是有限列表.它的定义类似于Haskell中的方式.然而,Stream a是一种共同类型,建模无限列表.它被定义为(或者更确切地说,定义相当于)codata Stream a = a :: (Stream a).创建无限List或有限Stream是不可能的.但是,当我写出定义时

codata HList : Type -> Type where
    Nil : HList a
    Cons : a -> HList a -> HList a
Run Code Online (Sandbox Code Playgroud)

我得到了我对Haskell列表的期望,即我可以创建有限和无限结构.

所以让我把它们归结为几个核心问题:

  1. Haskell不区分归纳和共感类型吗?如果是这样,那是什么形式化?如果没有,那么哪个是[a]?

  2. HList是coinductive吗?如果是这样,coinductive类型如何包含有限值?

  3. 如果我们定义data HList' a = L (List a) | R (Stream a)怎么办?会考虑什么和/或仅对它有用HList

haskell infinite induction idris coinduction

30
推荐指数
3
解决办法
1505
查看次数

否定#available语句

我想只在运行早于OS的设备上执行代码块iOS8.我做不到:

if #available(iOS 8.0, *) == false {
    doFoo() 
}
Run Code Online (Sandbox Code Playgroud)

我现在使用的解决方案是:

if #available(iOS 8.0, *) { } else { 
    doFoo() 
}
Run Code Online (Sandbox Code Playgroud)

,但感觉笨重.还有另一种方法可以#available优雅地否定Swift 的声明吗?

ios swift

27
推荐指数
3
解决办法
2567
查看次数

为什么我不能安装三个以上的应用程序?

我刚开始学习如何制作iOS应用程序,并且正在使用免费的个人开发者帐户.

到目前为止,我已经制作了四个应用程序,但似乎无法安装三个以上的应用程序.即使我安装了三个应用程序,并且更新其中一个已安装的应用程序,我在Xcode中收到以下错误消息:

应用安装失败

已达到免费开发配置文件的最大应用数量.

根据我的阅读,每个应用程序应该签署一个星期,但我只是编写了几天.

如何安装更多应用,或者是否必须从设备中删除现有应用?

ios xcode8

27
推荐指数
5
解决办法
2万
查看次数

从oneToMany关系中删除项目

我有以下图库实体

class Gallery
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var ArrayCollection
     * @ORM\OneToMany(targetEntity="Tessa\GalleryBundle\Entity\Photo", mappedBy="gallery", cascade={"persist", "remove"})
     */
    private $photos;

    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

gallery与实体的manyToOne关系有关PointOfInterest.这是宣言

class PointOfInterest
{
 /* ... */
 /**
 * @ORM\ManyToOne(targetEntity="Tessa\GalleryBundle\Entity\Gallery", cascade={"persist", "remove"})
 * @ORM\JoinColumn(nullable=false)
 */
private $gallery;
 /* ... */
Run Code Online (Sandbox Code Playgroud)

我还使用表单来更新PointOfInterest实体.这是表格声明

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
            ->add('name',           'text')
            ->add('gallery',        new GalleryType())
       ;
}
Run Code Online (Sandbox Code Playgroud)

和 …

symfony doctrine-orm

26
推荐指数
1
解决办法
3万
查看次数

使用子文件夹进行Python单元测试发现

我的unittest文件夹以这种方式组织.

.
|-- import
|   |-- import.kc
|   |-- import.kh
|   `-- import_test.py
|-- module
|   |-- module.kc
|   |-- module.kh
|   `-- module_test.py
`-- test.py
Run Code Online (Sandbox Code Playgroud)

我想简单地运行test.py我的每个*_test.py使用unittest python模块.目前,我的test.py包含

#!/usr/bin/env python

import unittest

if __name__ == "__main__":
    suite = unittest.TestLoader().discover('.', pattern = "*_test.py")
    unittest.TextTestRunner(verbosity=2).run(suite)
Run Code Online (Sandbox Code Playgroud)

python文档说它应该自动在子文件夹中发现我的测试.但事实并非如此.

目前,它只输出

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
Run Code Online (Sandbox Code Playgroud)

我确定这不是我的*_test.py文件的问题,因为当我将它们移动到根目录时,它工作正常..我做错了什么?

python unit-testing discover

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

RxSwift/RxCocoa的以下示例代码有什么作用?

我想详细了解

.drive(resultsTableView.rx_itemsWithCellIdentifier("WikipediaSearchCell",
       cellType: WikipediaSearchCell.self)) 
          { (_, viewModel, cell) in
              cell.viewModel = viewModel
          }
Run Code Online (Sandbox Code Playgroud)

来自WikipediaSearchViewController.swift第47-64行.我试图提取参数来查看具体的类型签名,但重写为

    let temp1 = searchBar.rx_text
        .asDriver()
        .throttle(0.3)
        .distinctUntilChanged()
        .flatMapLatest { query in
            API.getSearchResults(query)
                .retry(3)
                .retryOnBecomesReachable([], reachabilityService: ReachabilityService.sharedReachabilityService)
                .startWith([]) // clears results on new search term
                .asDriver(onErrorJustReturn: [])
        }
        .map { results in
            results.map(SearchResultViewModel.init)
    }

    let driveArg1 = resultsTableView.rx_itemsWithCellIdentifier("WikipediaSearchCell", cellType: WikipediaSearchCell.self)
    let driveArg2 = { (_, viewModel: SearchResultViewModel, cell: WikipediaSearchCell) in
        cell.viewModel = viewModel
    }
    temp1.drive(driveArg1, curriedArgument: driveArg2)
        .addDisposableTo(disposeBag)
Run Code Online (Sandbox Code Playgroud)

不能使用类型'(String,cellType:UITableViewCell.Type)'的参数列表调用'rx_itemsWithCellIdentifier'

对于driveArg1和

没有更多上下文,表达式的类型是模糊的

对于driveArg2.

的签名driverx_itemsWithCellIdentifier …

swift rx-swift

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

如何使用MVVM和RxSwift快速显示/隐藏progressHUD

我从MVVM开始,以便将逻辑代码从视图中分离出来.但我有点担心在点击发出请求的按钮时将progressHUD相关代码放在哪里.

之前,我曾经这样做过:

//Before 
@IBAction func startRequestTapped() {
   SVProgressHUD.show()
    self.apiClient.requestObservable().subscribe(onError: { (error) in
        SVProgressHUD.hide()                    
    }, onCompleted: { 
        SVProgressHUD.hide()                                        
    })
}
Run Code Online (Sandbox Code Playgroud)

但是当我使用mvvm时,我确实喜欢这样:

//In the viewModel
public var validateButtonDidTap = PublishSubject<Void>()
init() {
    validateButtonDidTap.flatMap { (_)
        return self.apiClient.requestObservable()
    }
}


   // In the viewController
viewDidLoad() {
    let tap = self.validateButton.rx.tap
    tap.bindTo(self.viewModel.validateButtonDidTap)
}
Run Code Online (Sandbox Code Playgroud)

其中,我不知道将ProgressHUD隐藏或显示放在哪里.

mvvm ios svprogresshud swift rx-swift

5
推荐指数
2
解决办法
4310
查看次数

分组TableView

在此输入图像描述

我想创建一个看起来像这个图像的表格视图!谁可以告诉我一个例子或说我该怎么做?

iphone slider switch-statement tableview

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