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
}
}];
我正在尝试从我的 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
}
}];