我喜欢NSMutableArray的便利,但有时你只需要下载到好的C-array阵列.就像将交错的顶点数组提供给OpenGL一样.
将NSMutableArray的内容复制到C阵列的最快方法是什么?
是的,我意识到这一点改组引入了低效率,但我想看看我是否可以通过这种方法偷偷摸摸而不会降低帧率.
干杯,道格
长期以来,Windows开发人员,第一次使用Objective-C/iPhone开发人员想要创建NSArrays的NSDictionary,它可以在带有字母部分的普通UITableView中显示.
这个数组字典的源代码是一个包含按字母顺序排序的商店名称的数组:
苹果商店
亚特兰大面包公司
国界
熊熊工作室
嘉吉画廊
迪拉兹
迪克体育用品
埃迪Baure
手提箱
GameStop的
Heizberg钻石
视点
麦当劳
诺德斯特龙
玮伦鞋业
Pottery Barn的
冬至
星巴克咖啡
维多利亚的秘密
白色谷仓烛业
从源创建的数组字典应该类似于这样(括号中的数据类型):
Root(Dictionary)
.... A(Array)
........ Apple Store(String)
........ Atlanta Bread Company(String)
.... B(Array)
... ..... Borders(String)
........ Build-A-Bear Workshop(String)
.... C(Array)
........ Cargill Gallery(String)
... .D(阵列)
........ Dillards(String)
........ Dick的体育用品(String)
......等.
像上面结构的数组字典填充TableView并显示如下:
一个
苹果商店
亚特兰大面包公司
乙
国界
熊熊工作室
Ç
嘉吉画廊
d
迪拉兹
迪克体育用品
等.
我编写的创建数组字典的代码最终将每个节标题后面的最后一个商店(White Barn Candle Co.)放入.
A
White Barn Candle Co.
B
White Barn Candle …
我有一个NSMutableArray返回一个非常大的索引?
po [masterArray count] < returns "2"
NSUInteger theIndex = [masterArray indexOfObject:validateEnrollmentStatus];
Run Code Online (Sandbox Code Playgroud)
以上返回的NSUInteger为"2147483647"?我不确定这是怎么可能的或者发生了什么?masterArray显然已经在调试控制台中给出了count方法调用项.
有人有什么建议吗?
我已经得到了有关问题@[]和@{}.
一些代码来自互联网:
self.searches = [@[] mutableCopy];
self.searchResults = [@{} mutableCopy];
Run Code Online (Sandbox Code Playgroud)
@[]等于[NSMutableDictionary dictionary]?@{}等于[NSMutableArray array]?我有一个方法返回一个带有一串字符串的NSMutableArray.如何将此数组(带字符串)添加到plist文件并使用它来填充UITableView?谢谢
I have a NSMutableArray.
It contains NSIndexPaths which itself a NSUInteger array.
Array looks like this
[
(NSIndexPath xxxxxxx) 3 indexes [1, 0, 0],
(NSIndexPath xxxxxxx) 3 indexes [2, 1, 1],
(NSIndexPath xxxxxxx) 3 indexes [1, 1, 0],
(NSIndexPath xxxxxxx) 3 indexes [1, 0, 1],
Run Code Online (Sandbox Code Playgroud)
. .
]
现在我想NSMutableArray基于NSIndexPath整数数组值进行排序.结果应该是这样的.
[
(NSIndexPath xxxxxxx) 3 indexes [1, 0, 0],
(NSIndexPath xxxxxxx) 3 indexes [1, 0, 1],
(NSIndexPath xxxxxxx) 3 indexes [1, 1, 0],
(NSIndexPath xxxxxxx) 3 indexes …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()虚拟数据.但即使想到这一点,我也觉得很脏.必须有一个正确的方法来做到这一点?我不完全确定要搜索什么...
我的任务是"清理"其他人的Objective-C代码.我承认,这肯定不是我最喜欢的语言.
我在这个用户代码中发现的一个方法对我来说似乎是多余的:
if (favoriteItemsArray || [favoriteItemsArray count] > 0) {
[favoriteItemsArray removeAllObjects];
favoriteItemsArray = nil;
}
if (favoriteOrderArray || [favoriteOrderArray count] > 0) {
[favoriteOrderArray removeAllObjects];
favoriteOrderArray = nil;
}
favoriteItemsArray = [[NSMutableArray alloc] init];
favoriteOrderArray = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)
我想和你们仔细检查一下,看看我是否对JAVA过于习惯,但是这段代码不能简化为最后两行而只是说:
favoriteItemsArray = [[NSMutableArray alloc] init];
favoriteOrderArray = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)
如果不能有人解释?
这不是我的代码..
我有一个PersonsArray: NSMutableArray = [NSNull, NSNull, NSNUll, NSNull, NSNull, NSNUll, NSNull].我需要七个插槽,然后我可以用EntObject CoreData条目填充AnyObject.
我需要在这个NSMutableArray上循环执行...
如果索引槽是NSNull我想传递给下一个索引槽,如果索引槽填充了我的对象我想在这个对象上执行代码.
example PersonsArray: NSMutableArray = [
NSNull,
NSNull,
NSNull,
"<iswift.Person: 0x7f93d95d6ce0> (entity: Person; id: 0xd000000000080000 <x-coredata://8DD0B78C-C624-4808-9231-1CB419EF8B50/Person/p2> ; data: {\n image = nil;\n name = dustin;\n})",
NSNull,
NSNull,
NSNull
]
Run Code Online (Sandbox Code Playgroud)
尝试
for index in 0..<PersonsArray.count {
if PersonsArray[index] != NSNull {println(index)}
}
Run Code Online (Sandbox Code Playgroud)
提出了一系列不起作用的变化,比如
if PersonsArray[index] as! NSNull != NSNull.self {println(index)}
Run Code Online (Sandbox Code Playgroud)
要么
if PersonsArray[index] as! NSNull != NSNull() {println(index)}
Run Code Online (Sandbox Code Playgroud)
注意:使用NSNull只是NSMutableArray中的占位符,因此它的计数总是7,我可以用Object替换任何(7)槽.我应该使用NSNull以外的东西作为我的占位符吗?
问题是我第一次从中获取数据WebServices所以我已经显示了这些数据TableView然后用户滚动下来tableview然后再次调用WebSevices并在数组中再次添加此数据但是当我尝试在nsmutable类型数组中再次添加数据应用程序崩溃
这是我的代码.有解决方案吗
第一次数据加载正在工作
var ary_mutable: NSMutableArray!
ary_mutable = NSMutableArray()
ary_mutable=jsonResult as AnyObject as! NSMutableArray
self.tbl_T.reloadData();
self.tbl_T.delegate=self;
self.tbl_T.dataSource=self;
Run Code Online (Sandbox Code Playgroud)
第二次数据加载并添加旧数组不工作
var myArray :NSArray!
myArray = jsonResult as AnyObject as! NSArray
ary_mutable.addObject(myArray.objectAtIndex(0))
Run Code Online (Sandbox Code Playgroud)
得到此错误
[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
Run Code Online (Sandbox Code Playgroud)
我也试过这段代码但不行
ary_mutable.addObject(myArray)
Run Code Online (Sandbox Code Playgroud) nsmutablearray ×10
objective-c ×7
ios ×6
iphone ×2
swift ×2
add ×1
asynchronous ×1
core-data ×1
equals ×1
nsarray ×1
nsindexpath ×1
nsnull ×1
opengl-es ×1
plist ×1
uitableview ×1
xcode ×1