ios Azure 移动服务 objective c update/modify 项目错误

ios Azure Mobile Services objective c update/modify item error

我正在尝试从我的 iOS 客户端更新 Azure 移动服务(javascript 后端)中的一个字段,但没有成功。当我为更新操作执行我的应用程序时,代码返回错误(我基本上从提供的示例中复制了代码 here)。 (它适用于读取和插入)

您可以在下面查看我的代码:

NSMutableDictionary *myDic = [item mutableCopy]; //item is the old dictionary
            [myDic setValue:@"Romanos" forKey:@"verseTitle"];
            [self.table update:myDic completion:^(NSDictionary *item2, NSError *error2) {
                // Handle error or perform additional logic as needed

            }];

然而,当我执行它时,我收到错误消息(来自附加的断点)关于:

3+[NSError errorWithDomain:code:userinfo:]
4-[MSJSONSerializer errorWithDescriptionKey:andErrorCode:]
5-[MSJSONSerializer errorForInvalidItemId]
6-[MSJSONSerializer itemIdFromItem:orError:]
7+[MSTableRequest requesToUpdateItem:withTable:withSerializer:completion:]
9-[MSTable update:completion:]
9_29-[ViewController viewDidLoad]_lbock_invoke
10__58+[MSTableConnection connectionWithReadRequest:completion:]bl_block_...
11-[MSConnectionDelegate connectionDidFinishLoading:]
12___ZL32_NSURLConnectionDidFinishLoadingP16_CFURLConne...

我收到的错误如下: 2015-08-17 15:17:34.097 Palavra do dia[13214:88493] * 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'Invalid domain=nil in -[NSError initWithDomain:code:userInfo:]' * 首先抛出调用堆栈:( 0 核心基础 0x00a9c746 __exceptionPreprocess + 182 1 libobjc.A.dylib 0x00725a97 objc_exception_throw + 44 2 核心基础...

拜托,我有什么解决办法吗?

如果我用@try 和@catch 包围代码,我会在日志中查看以下消息:]

-[NSError initWithDomain:code:userInfo:]

中的域无效=nil

更新记录时,必须包含要更新的记录的 ID。您没有包含来自 Azure SDK 的实际错误消息,但根据您包含的堆栈跟踪判断,您尝试更新的项目 NSDictionary 有一个 "id" 键,但该值既不是 NSNumber 也不是 NSString。

'item' NSDictionary 中有什么内容?如果它是通过 Azure SDK 来自您使用移动服务创建的 table,它应该有一个字符串 ID。

编辑下面的评论 使用 NSPredicate 的过滤器仍会为您提供一个带有一个对象(而不是项目本身)的 NSArray,因此要从数组中取出项目并获取其 ID,您需要执行

NSDictionary *item = filteredArray.firstObject;
NSString *itemId = item[@"id"];

为了根据移动服务SDK查看错误是什么,您可以在完成块中记录它:

[self.table update:@{@"id":@"E5B33C88-332F-4C4A-A8A9-EA0CDC4A1DF3", @"verseTitle":@"Update test"} 
    completion:^(NSDictionary *item, NSError *error) {

    if (error)
        NSLog(@"Error updating item: %@", error);
        // ... and handle the error
    }
}];