小编Dav*_*vid的帖子

RestKit响应无法反序列化为对象

我在使用RestKit发布请求期间将响应映射回对象时遇到问题.

这是代码:

请求:

// mapping for the response. response is an object: {"response":"message","success":bool}
RKObjectMapping *responseMapping = [RKObjectMapping mappingForClass:[GenericResponse class]];
    [responseMapping addAttributeMappingsFromArray:@[@"success",@"response"]];
    responseMapping.setDefaultValueForMissingAttributes = YES;
    RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping pathPattern:@"/authenticate" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

    // mapping for the request body
    RKObjectMapping *requestMapping = [RKObjectMapping requestMapping];
    [requestMapping addAttributeMappingsFromArray:@[@"username", @"password"]];
    RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping objectClass:[LoginCriteria class] rootKeyPath:nil];

    // set up the request
    RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://localhost:8080"]];
    [manager addResponseDescriptor:responseDescriptor];
    [manager addRequestDescriptor:requestDescriptor];
    [manager setRequestSerializationMIMEType:@"application/json"];

    // set up the LoginCriteria object
    LoginCriteria* loginCriteria = …
Run Code Online (Sandbox Code Playgroud)

ios restkit restkit-0.20

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

无法使用RestKit 0.20从Core Data中删除实体

下面的代码不会删除实体.控制台上出现"删除成功"消息,因此找到了实体.我使用的所有其他操作都成功.

我正在使用RestKit 0.20.

NSManagedObjectContext *context = [RKManagedObjectStore defaultStore].mainQueueManagedObjectContext;
NSError *error = nil;

NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity: [NSEntityDescription entityForName:@"Auction" inManagedObjectContext:context]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"AuctionID = %d", auctionID];
[fetchRequest setPredicate:predicate];

NSArray *result = [context executeFetchRequest:fetchRequest error:&error];
if(result.count) {
    Auction *block = result[0];
    [context deleteObject:block];
    BOOL status = [context save:&error];
    if (status == NO) {
        NSLog(@"delete falied for AuctionID:%d, error: %@", auctionID, error);
    }
    else {
        [context processPendingChanges];
        NSLog(@"delete was successful for AuctionID:%d", auctionID);

    }
}
Run Code Online (Sandbox Code Playgroud)

为什么删除操作不成功以及使其工作的解决方案是什么.

core-data ios restkit restkit-0.20

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

为什么XMLHttpRequest成功时跨域angularjs $ http.post请求失败?

我正在尝试使用角度(版本1.0.5)webapp中的应用程序密钥和令牌来运行Trello API.服务器似乎正确配置为处理CORS.来自enable cors的http://test-cors.org的测试请求按预期工作.

当我在我的一个角度控制器中发出请求时:

$http.post(url).success(function(data) {
  $scope.server_resp = data;
});
Run Code Online (Sandbox Code Playgroud)

我得到一个Request头字段Access-Control-Allow-Headers错误不允许Content-Type.(即使如下所示,Access-Control-Allow-Origin设置为'*').为什么添加此标题并将其删除?

XMLHttpRequest的

当我使用原始XMLHttpRequest发出相同的请求时,它会成功.以下是XMLHttpRequest的标头:

Request Method:POST
Status Code:200 OK

Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:0
Host:api.trello.com
Origin:http://192.168.0.125:9000
Referer:http://192.168.0.125:9000/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22

Response
Access-Control-Allow-Methods:GET, PUT, POST, DELETE
Access-Control-Allow-Origin:*
Cache-Control:max-age=0, must-revalidate, no-cache, no-store
Content-Length:563
Content-Type:application/json
Date:Mon, 18 Mar 2013 02:49:37 GMT
Expires:Thu, 01 Jan 1970 00:00:00
X-Powered-By:Express
X-Server-Time:1363574977568
Run Code Online (Sandbox Code Playgroud)

Angular $ http.post

以下是角度启动请求的标头.请注意,浏览器发出了飞行前OPTIONS请求:

Request Method:OPTIONS …
Run Code Online (Sandbox Code Playgroud)

angularjs

7
推荐指数
2
解决办法
3万
查看次数

为什么不能从数组对象中获取Py_buffer?

数组上python文档清楚地表明该数组符合缓冲区接口.它甚至建议不使用buffer_info()方法.但是当我尝试使用PyObject_GetBuffer()从C/C++代码中获取Py_Buffer或使用python的memoryview时,我得到了一个失败.

例如,在python中(我使用的是2.7版):

>>> a = array.array('c')
>>> memoryview(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot make memory view because object does not have the buffer interface
Run Code Online (Sandbox Code Playgroud)

实际上,当我搜索python的代码库时,只有bytearrayobject(bytearray),memoryobject(memoryview)和stringobject(str)在它们上面设置了所需的Py_TPFLAGS_HAVE_NEWBUFFER标志.据我了解,文档是错误的; 数组不支持缓冲区接口.

我可以使用支持缓冲区接口的bytearray,问题是我需要数组的实用fromfile()方法来读取我可以在我的C/C++代码中使用的缓冲区.

有没有一种方法可以让我将文件读入缓冲区并使用C代码中的缓冲区,而不涉及内存副本?(我想处理大二进制文件,复制是一个不太理想的选择).

python arrays buffer memoryview pep3118

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

angular-leaflet-directive自定义消息html,带有标记弹出窗口中的angular指令.如何?

我想将带有$ scope事件处理程序的自定义html标记插入到传单标记的message属性中.例如:

App.controller('testController', ['$scope', "leafletEvents", '$compile', 'leafletMarkersHelpers',
function($scope, leafletEvents, $compile, leafletMarkersHelpers){

angular.extend($scope, {
    currentLocation : {
        lat: 20,
        lng: 20,
        zoom: 20
    },
    markers: {
    },
    defaults: {
        scrollWheelZoom: true
    },
    events: {
        map: {
            enable: ['zoomstart', 'drag', 'click', 'mousemove', 'popupopen'],
            logic: 'emit'
        },
        markers: {
            enable: leafletEvents.getAvailableMarkerEvents()
        }
    }
});
var html = " <a href=''>info</a><button type='button' ng-click='doSomeAction()'>Choose</button>";
var item = {...}; //some data for marker
            $scope.markers["newMarker"] = {
                lat: item.lat,
                lng: item.lng,
                message: item.message + html,
                draggable: false …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs leaflet angular-leaflet-directive

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

使用boost.python从UTF-8编码的char*返回python unicode实例

我正在尝试做一些应该非常简单的事情,但是我没有太多的运气来弄清楚现有文档中的内容.

对于python 2项目,我试图将列表gettext-translated字符串作为unicode实例返回给python.gettext()的返回值是一个UTF-8编码的char*,使用PyUnicode_FromString转换为python unicode instrance应该非常简单.我有一种感觉,这是微不足道的,但我似乎无法弄清楚如何.

根据Ignacio Vazquez-Abrams和Thomas KI的评论,确实让这个单线工作; 对于这种情况,您可以绕过所有boost.python基础结构.这是一个例子:

        PyObject* PyMyFunc() {
            const char* txt =  BaseClass::MyFunc();
            return PyUnicode_FromString(txt); 
    }       
Run Code Online (Sandbox Code Playgroud)

暴露在通常的def语句中:

class_<MyCclass>("MyClass")
    .def("MyFunc", &MyClass::PyMyFunc);
Run Code Online (Sandbox Code Playgroud)

不幸的是,当您想要返回unicode实例列表时,这不起作用.这是我天真的实现:

boost::python::list PyMyFunc() {
    std::vector<std::string> raw_strings = BaseClass::MyFunc();
    std::vector<std::string>::const_iterator i;
    boost::python::list result;

    for (i=raw_strings.begin(); i!=raw_strings.end(); i++)
        result.append(PyUnicode_FromString(i->c_str()));
    return result;
}
Run Code Online (Sandbox Code Playgroud)

但这不编译:boost :: python :: list似乎处理PyObject值.

c++ python boost boost-python

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

尝试使用RestKit发出POST请求并将响应映射到Core Data

我正在使用RestKit框架,我想发出一个POST HTTP请求.响应是JSON.我想将JSON响应自动放入CoreData中.

我不知道确切地调用什么方法来发出请求.我知道我应该使用RKObjectManager的方法,但我找不到合适的方法.

我找到了这个方法,postObject:delegate:但我不知道作为参数传递的对象.我也在文档中找到了这个方法:loadObjectsAtResourcePath:usingBlock:但是我不能使用它,因为它告诉我:

No visible @interface for 'RKObjectManager' declares the selector 'loadObjectsAtResourcePath:usingBlock:'
Run Code Online (Sandbox Code Playgroud)

http request ios restkit restkit-0.20

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

如何子类array.array并使其派生构造函数在python中不带参数?

我想封装一个python数组来修复它的类型代码并将其隐藏起来.我以为我可以使用派生来实现这一点,但是我无法构造我的Type,因为它缺少必需的参数:

class MyBinaryBuffer(array.array):
    def __init__(self):
        array.array.__init__(self, 'B') #this is the fixed 'B' typecode parameter for 
                                  #array.array() constructor

myBuffer = MyBinaryBuffer()
Run Code Online (Sandbox Code Playgroud)

我明白了:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: array() takes at least 1 argument (0 given)
Run Code Online (Sandbox Code Playgroud)

我怎么能以自然的方式实现这个呢?

经过一些研究,我发现我应该使用构造函数.

编辑:斯文Marnach建议增加自其向我指出添加缺少的CLS parmeter在__ __版本,它的工作原理.

class MyBinaryBuffer(array.array):
    def __new__(cls):
        return super(MyBinaryBuffer, cls).__new__(cls, 'B')

myBuffer = MyBinaryBuffer()
Run Code Online (Sandbox Code Playgroud)

python constructor new-operator

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

Restkit 0.20:POST与外键的CoreData关系

我在使用RestKit和CoreData时遇到了一些困难,特别是因为RestKit 0.20的示例和文档很少.

我有一个(托管)对象Song与多对一关系Album.以下代码可以发布JSON,但不能以服务器排除的展格式发布.

// Defined elsewhere
Album *theAlbum;
RKObjectManager *objMan = [self objectManager];

// Response Mapping
RKObjectMapping *responseMapping = [RKObjectMapping mappingForClass:[Song class]];
[responseMapping addAttributeMappingsFromDictionary:@{ @"song": @"songID" }];
NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful);
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping
                                                                                   pathPattern:@"/api/song"
                                                                                       keyPath:nil
                                                                                   statusCodes:statusCodes];

// Request Mapping
RKObjectMapping *requestMapping = [RKObjectMapping requestMapping];
RKEntityMapping *albumRelationshipMapping = [RKEntityMapping mappingForEntityForName:@"Album" inManagedObjectStore:[objMan managedObjectStore]];
[albumRelationshipMapping addAttributeMappingsFromDictionary:@{@"id": @"albumID", }];
[requestMapping addAttributeMappingsFromDictionary:@{ @"title": @"title", @"length": @"length" }];
[requestMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"album"
                                                                               toKeyPath:@"album"
                                                                             withMapping:albumRelationshipMapping]];
requestMapping = [requestMapping inverseMapping]; …
Run Code Online (Sandbox Code Playgroud)

foreign-key-relationship ios restkit restkit-0.20

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

RestKit 0.2连接到无效的HTTPS安全证书

在RestKit 0.2中,如何允许我的应用程序连接到具有无效https安全证书的服务器?从AFNetworking文档来看,我所要做的就是#define _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_.但是,我已将该命令添加到我的pch文件,Build Settings> Preprocessor Macros和我的App Delegate.所有这些都无法连接.有任何想法吗?

ios restkit restkit-0.20

3
推荐指数
2
解决办法
2157
查看次数

使用RestKit 0.20进行核心数据初始化

我正在尝试更新我使用Restkit 0.1到0.20的现有应用程序,但在设置核心数据堆栈时遇到一些问题,因为它遇到异常.

我的AppDelegate上有以下代码:

     /*
     Complete Core Data stack initialization
     */
    NSError *error = nil;
    NSURL *modelURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"AppModel" ofType:@"momd"]];
    // NOTE: Due to an iOS 5 bug, the managed object model returned is immutable.
    NSManagedObjectModel *managedObjectModel = [[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL] mutableCopy];
    RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel];
    [managedObjectStore createPersistentStoreCoordinator];
    NSString *storePath = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"TSI.sqlite"];
    NSString *seedPath = [[NSBundle mainBundle] pathForResource:@"RKSeedDatabase" ofType:@"sqlite"];
    //NSPersistentStore __unused *persistentStore = [managedObjectStore addInMemoryPersistentStore:&error];
    NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:seedPath withConfiguration:nil options:nil error:&error];
    NSAssert(persistentStore, …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c ios restkit restkit-0.20

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

在具有UIGestureRecognizer的视图中,不会调用UIBarButtonItem的操作

我有一个简单的UIViewController派生控制器,它有UITextFields.

同样使用IB,我放置了一个UIToolbar和两个UIBarButtonItems.我按Ctrl-拖动以向按钮添加操作.

- (IBAction)cancel:(id)sender { ... }
- (IBAction)save:(id)sender { ... }
Run Code Online (Sandbox Code Playgroud)

如果我运行代码,则会调用操作.

问题:我想在背景上实现resignFirstResponder范例,所以我在根视图上添加了一个UITapGestureRecognizer:

- (void)viewDidLoad { 
    ...
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
    [self.view addGestureRecognizer:tap];
   }
Run Code Online (Sandbox Code Playgroud)

当我有手势识别器时,不会调用UIBarButtonItems的动作

我怎么能双管齐下?

感谢您的任何解释,可以帮助我实现这一点.

uibarbuttonitem ios uitapgesturerecognizer

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

Restkit 0.20基本操作

我刚刚开始使用RestKit,并且在Rk 0.20正在运行时已经到达,文档和演示是落后的.网上的大多数内容都是0.10卢比,而且0.20版本有很大的变化.

当新版本很快就会启动并运行时,我不想回到早期版本.

我在URL"test.myserver.com"上有一个JSON资源,它返回一个简单的数据报 - {"id_user":"4401","datalocation":"4401","country":"Great-Britain","data" ":"testdata","login":"Fred Bloggs","password":"579c0cb0ed2dc25db121283f7a98cc71","accessLevel":"2","timestamp":"1012","datahash":"2749da29f20ce7a85092323f193adee8"}

我很确定我有Mappings等排序,但我的服务需要身份验证,所以我需要将请求中的用户名和密码传递给服务器.

到目前为止我有这个

NSURL *url = [NSURL URLWithString:@"http://test.myserver.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
RKObjectRequestOperation *objectRequestOperation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]];

[objectRequestOperation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
RKLogInfo(@"Load collection of Articles: %@", mappingResult.array);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
RKLogError(@"Operation failed with error: %@", error);
}];

         [objectRequestOperation start];
Run Code Online (Sandbox Code Playgroud)

这似乎与服务器联系但不可避免地记录以下错误

restkit.network:RKObjectRequestOperation.m:296对象请求失败:基础HTTP请求操作失败,错误:错误Domain = org.restkit.RestKit.ErrorDomain Code = -1011"预期状态代码在(200-299),得到401"UserInfo = 0x7884030 {NSLocalizedRecoverySuggestion = {"error":{"code":401,"message":"Unauthorized:Authentication required"}},AFNetworkingOperationFailingURLRequestErrorKey = http://elancovision.umfundi.com>,NSErrorFailingURLKey = http:// elancovision .umfundi.com,NSLocalizedDescription =预期状态代码(200-299),得到401,AFNetworkingOperationFailingURLResponseErrorKey =}

问题当然是我如何在请求中添加用户名和密码.

抱歉,这个菜鸟问题!

restkit restkit-0.20

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