0
我试图在我的RKObjectManager
上搜索,如果我正在构建的描述已经注册或者没有。 我发现有一个描述符列表感谢requestDescriptors
,但我无法将它们与我的相比较。RKObjectManager:在添加之前检查requestDescriptors
我绝对需要检查这些描述符,因为我不能用这个代码添加一个又一个,如果它已经存在(这使得我的应用程序崩溃):
[objectManager addRequestDescriptor:requestDescriptor];
我试过一个简单的迭代与
BOOL toAdd = YES;
for (RKRequestDescriptor *desc in objectManager.requestDescriptors) {
if ([desc isEqualToRequestDescriptor:requestDescriptor]) {
toAdd = NO;
}
}
if (toAdd) {
[objectManager addRequestDescriptor:requestDescriptor];
}
但我可以看到我的调试器:
Printing description of desc:
<RKRequestDescriptor: 0xd366950 method=(POST) objectClass=User rootKeyPath=(null) : <RKObjectMapping:0xd3664d0 objectClass=NSMutableDictionary propertyMappings=(
"<RKAttributeMapping: 0xd366510 facebookToken => fb_token>"
)>>
Printing description of requestDescriptor:
<RKRequestDescriptor: 0x12847d00 method=(POST) objectClass=User rootKeyPath=(null) : <RKObjectMapping:0x1284c3d0 objectClass=NSMutableDictionary propertyMappings=(
"<RKAttributeMapping: 0x12842860 facebookToken => fb_token>"
)>>
所以我的测试关于平等是错误的,我的变量toAdd
仍然如此。
我有同样的问题:
if (desc.mapping == requestDescriptor.mapping) {
toAdd = NO;
}
请参阅从调试器的比较:
Printing description of $0:
<RKObjectMapping:0xd03ac50 objectClass=NSMutableDictionary propertyMappings=(
"<RKAttributeMapping: 0xd066530 facebookToken => fb_token>"
)>
Printing description of $1:
<RKObjectMapping:0xd431d90 objectClass=NSMutableDictionary propertyMappings=(
"<RKAttributeMapping: 0xd4520b0 facebookToken => fb_token>"
)>
谢谢您的帮助。
我编辑我的文章解释说,这是行不通的。我在主要主题上添加了比较。 – BriceB
好的,我只是用我自己的项目尝试过。如果描述符的一个参数是“nil”,那么'isEqualToRequestDescriptor'确实返回'NO'。所以最后你必须设置所有参数。在我的情况下,'rootKeyPath'是'nil',导致比较失败。为了克服'rootKeyPath'问题,我将它设置为'@“”'。 – Daniel
它的工作原理!我不得不对API进行一些更新,但它完美的工作。感谢您的测试和快速! – BriceB