如何在不收到错误的情况下检查NSMutableArray中的对象是否为nil index .. beyond bounds for empty array?我使用以下代码收到错误:
if (![self.sortedArray objectAtIndex:[alphabet indexOfObject:[NSString stringWithFormat:@"%c", (char) [letter characterAtIndex:0]]]]) {
NSMutableArray *arr = [NSMutableArray arrayWithObject:countryDict];
[self.sortedArray addObject:arr];
}
else {
[[self.sortedArray objectAtIndex:[alphabet indexOfObject:[NSString stringWithFormat:@"%c", (char) [letter characterAtIndex:0]]]] addObject:countryDict];
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试NSMutableArray使用a的值初始化a NSArray但是当我NSLog新创建的NSMutableArray所有我得到的是(null),(null)...等
我不知道为什么会发生这种超级令人沮丧的事情.
我myMutableArray在标题@synthesize等设置..
然后在parserdidend委托中这是我尝试做的.
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
if (dataSetToParse == @"ggf"){
//Filter results (ISTOY = T)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K like %@",@"ISTOY",@"T"];
NSArray *filteredArray = [parsedDataArrayOfDictionaries filteredArrayUsingPredicate:predicate];
NSLog(@"%@", filteredArray); //This prints correct details
[myMutableArray setArray:filteredArray];
NSLog(@"%@", myMutableArray); //This prints (null), (null)... etc
//Use myMutableArray later...
}
Run Code Online (Sandbox Code Playgroud)
这几乎总结了它.
我正在尝试创建一个NSMutableArray包含给定索引的另一个内容.
initWithArray:如果前一个数组在索引处有任何内容,我正在初始化新数组,否则使用plaininit
此代码不起作用,但您应该能够从中获取想法:
NSMutableArray *typeCourseCutId;
if([self.typeCourseCut objectAtIndex:typeCourseIndex] != nil){
typeCourseCutId = [[NSMutableArray alloc]initWithArray:[self.typeCourseCut objectAtIndex:typeCourseIndex]];
} else {
typeCourseCutId = [[NSMutableArray alloc]init];
}
Run Code Online (Sandbox Code Playgroud)
这种测试有解决方案吗?
我找到了很多关于NSMutableArrayvs的讨论NSArray.这非常有趣,我知道您无法在NSArray中添加或删除对象
但是有可能改变一个NSArray?
我的意思是,如果我有一个NSArray的NSNumber,我可以改变NSNumber的NSArray或者我应该使用NSMutableArray能够修改该对象的值NSArray ?
我正在为一些图像开发一个简单的iOS缓存系统.我需要跟踪UIImage本身及其标识符.现在,我试图找出哪种方法可以更快/更有效地访问正确的缓存图像.
选项1:
for (CachedImage* image in [cachedImageArray]
{
if ([[image identifier] isEqualToString:@"id_12345"]
{
// use that image
}
}
Run Code Online (Sandbox Code Playgroud)
选项2:
UIImage* imageToRetrieve = [cachedImagesDictionary objectForKey:@"id_12345"
Run Code Online (Sandbox Code Playgroud)
使用一种方法或另一种方法有什么好处吗?如果是这样,它是不可忽视的吗?谢谢.
在我的应用程序中,我试图能够从我的服务器下载两个对象,一个"文章"和一个图像.'article'对象(从sql-query翻译成NSObject的子类)有一个指向下载图像的指针,显然需要比文章查询更长的下载时间.当我'下载'文章时,他们最终会进入NSArray.当它们完成后,我将遍历数组以启动每个图像的异步下载,如下所示:
for(Article *a in articles)
{
NSString *url = a.imageURL;
//Start async download of this image
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Parse Framework来执行此操作,因此对于没有使用它的人来说块可能看起来很奇怪,所以我只是解释一下:在块中(当异步下载完成时),我正在分配将NSData(图像)返回给另一个NSMutableArray名为的数组,articleImages我希望这个数组中的图像索引对应于另一个文章的索引; 两个阵列中的相同年表.
现在,我这样做是:[articleImages insertObject:data atIndex:i];(其中i来自for循环,没有真正使用上述的foreach),因为该块仍然是相同的for循环中.这是现在的工作,但到目前为止我只测试了三篇文章.如果我在这里并没有完全错误,那么这是一个糟糕而有缺陷的方法,就像image2下载速度比image1更快的情况,即使它稍后开始.在那些情况下,我想我会偶然发现一个异常,说我不能index:2在空数组中插入对象.
我正在考虑使用大小的虚拟数据填充数组[articles count],然后i在下载的图像中以随机顺序替换正确的index()虚拟数据.但即使想到这一点,我也觉得很脏.必须有一个正确的方法来做到这一点?我不完全确定要搜索什么...
我有2个nsarrays 1与nsdictionary的另一个与nsnumbers
NSArray *arr1 = @[@{@"id":@1},@{@"id":@2},@{@"id":@3},@{@"id":@4}];
NSArray *arr2 = @[@3,@1,@4,@2];
Run Code Online (Sandbox Code Playgroud)
并且我想按照arr2的顺序通过他们的id对我的arr1进行排序这可能吗?
这是我的数据模型:
@interface DataModel : NSObject
@property (strong, nonatomic) NSString *label;
@property (nonatomic) float value;
@property (nonatomic) NSInteger index;
@property (nonatomic, strong) NSString *unit;
@end
Run Code Online (Sandbox Code Playgroud)
我有一个NSArray与这个数据模型
NSArray *myDataModels;
Run Code Online (Sandbox Code Playgroud)
现在我需要从这个数组中获取最高的数据模型 @property (nonatomic) float value;
我可以通过使用获得最高价值
[[myDataModels valueForKeyPath:@"@max.value"] intValue]
Run Code Online (Sandbox Code Playgroud)
但我需要的是DataModel具有最高价值的整体,而不仅仅是价值.
有人可以帮帮我吗?
我有一个NSArray的NSDictionaries.我需要更新NSArray的NSDictionaries与新值更新的字典重点之一的价值.
请参见下面的NSArray结构.Key3如果Key1匹配某个值(例如2),我想更新此结构内部的值.这样做最快的方法是什么?我不想使用传统的For循环.
[myArray valueForKeyPath:@"@unionOfObjects.Key3"];
<__NSCFArray 0xe70c10>(
{
Key1 = 1;
Key2 = "New Location";
Key3 = (
Data1,
Data2,
Data3
);
},
{
Key1 = 2;
Key2 = "Old Location";
Key3 = (
Data1,
Data2,
Data4
);
}
)
Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的项目翻译成另一种语言,但是在我的数组本地化时我遇到了困难.例如:
tableData = [[NSArray alloc] initWithObjects:
@"Test1",
@"Test2",
@"Test3",
@"Test4",
@"Test5",
nil];
Run Code Online (Sandbox Code Playgroud)
我试过了
tableData = [[NSArray alloc] initWithObjects:NSLocalizedString
(@"Test1",@"Test1"),
(@"Test2",@"Test2"),
...
Run Code Online (Sandbox Code Playgroud)
和
tableData = [[NSArray alloc] initWithObjects:NSLocalizedString
((@"Test1",@"Test1"),
(@"Test2",@"Test2")),
...
Run Code Online (Sandbox Code Playgroud)
但我得到"表达结果未使用".
生成.strings文件和本地化其他所有内容的所有过程都很好并且正常工作,我只需要一些帮助来找出如何将其写入数组.
有小费吗?
nsarray ×10
objective-c ×8
ios ×7
cocoa ×2
asynchronous ×1
cocoa-touch ×1
foundation ×1
indexing ×1
iphone ×1
localization ×1
nsdictionary ×1
performance ×1
sorting ×1