我正在尝试复制NSMutableArray到另一个但它没有向我显示任何内容UITableView:
NSMutableArray *objectsToAdd= [[NSMutableArray alloc] initWithObjects:@"one",@"two"];
NSMutableArray *myArray = [[NSMutableArray alloc] initWithObjects:objectsToAdd,nil];
NSMutableArray *list = [[NSMutableArray alloc] init];
[self.list addObjectsFromArray:myArray];
Run Code Online (Sandbox Code Playgroud)
什么都没有出现!怎么了?
它崩溃了我的应用程序,因为我没有对我的nil NSMutableArray如何添加nil?addobject:nil不起作用它崩溃的应用程序:
static NSString * DisclosureButtonCellIdentifier =
@"DisclosureButtonCellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
DisclosureButtonCellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier: DisclosureButtonCellIdentifier]
autorelease];
}
NSUInteger row = [indexPath row];
NSString *rowString =nil;
rowString = [list objectAtIndex:row];
cell.textLabel.text = rowString;
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
[rowString release];
return cell;
Run Code Online (Sandbox Code Playgroud) 是否可以对包含NSDictionary的NSArray使用快速枚举?
我正在浏览一些Objective C教程,以下代码将控制台踢入GDB模式
NSMutableArray *myObjects = [NSMutableArray array];
NSArray *theObjects = [NSArray arrayWithObjects:@"easy as 1",@"easy as two", @"Easy as Three"];
NSArray *theKeys = [NSArray arrayWithObjects:@"A",@"B",@"C"];
NSDictionary *theDict = [NSDictionary dictionaryWithObjects:theObjects forKeys:theKeys];
[myObjects addObject:theDict];
for(id item in myObjects)
{
NSLog(@"Found an Item: %@",item);
}
Run Code Online (Sandbox Code Playgroud)
如果我用传统的计数循环替换快速枚举循环
int count = [myObjects count];
for(int i=0;i<count;i++)
{
id item;
item = [myObjects objectAtIndex:i];
NSLog(@"Found an Item: %@",item);
}
Run Code Online (Sandbox Code Playgroud)
应用程序在没有崩溃的情况下运行,字典将输出到控制台窗口.
这是Fast Enumeration的限制,还是我错过了一些语言的巧妙?嵌套这样的集合时还有其他陷阱吗?
对于奖励积分,我如何使用GDB自行调试?
我想将a(或复制?)NSMutableArray转换为a NSString.我想我的问题是我并不真正了解a的结构NSString.转换后我想将它附加到电子邮件正文中.这是我的代码:
- (IBAction)sendEmail
{
NSLog(@"sendEmail");
[textView resignFirstResponder];
[textView1 resignFirstResponder];
if ([MFMailComposeViewController canSendMail])
{
// set the sendTo address
NSMutableArray *recipients = [[NSMutableArray alloc] initWithCapacity:1];
[recipients addObject:@"example@yahoo.com"];
MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:@"Iphone Game"];
NSString *string = [string appendString:[NSString stringWithFormat:"%@", [viewArray objectAtIndex:i]]];
[controller setMessageBody:string isHTML:NO];
[controller setToRecipients:recipients];
[self presentModalViewController:controller animated:YES];
[controller release];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert"
message:@"Your device is not set up for email." delegate:self …Run Code Online (Sandbox Code Playgroud) 现在我在简单的iPhone应用程序的工作,我已经存储在一定的价值NSMutableArray一样 "{54.399, 196}","{-268.246, 273}".,所以我希望得到54.399的第一indexpath,如何得到这个,请帮助我
提前致谢
可能重复:
NSMutableArray initWithCapacity细微差别
Objective-c NSArray init与initWithCapacity:0
以下代码行有什么区别?什么是确切的优势和劣势?假设接下来我将做3个addObject操作.
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity: 5];
NSMutableArray *array = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)
removeLastObjectNSRangeException如果数组中没有对象,则引发一个.
出于某种原因,我似乎能够在空数组上调用此方法,并且不会抛出任何异常.
这是一个测试用例:
- (void)testNSMutableArray
{
NSMutableArray* arr = [[NSMutableArray alloc] init];
STAssertTrue([arr count] == 0, @"Array count should be 0");
STAssertThrows([arr removeLastObject], @"Should throw NSRangeException");
}
Run Code Online (Sandbox Code Playgroud)
这个测试用例在最后一行失败了,并带有以下消息:
[arr removeLastObject] raise(null).应抛出NSRangeException
我在这迷茫吗?文档错了吗?
我有一个NSMutableArray控股,NSStrings例如{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
我希望能够用包装来移动元素.
因此,例如将1移动到中心,移动所有元素,将剩余的元素(越过边界)包裹起来再次开始,反之亦然,例如10到中心.
{7, 8, 9, 10, 1, 2, 3, 4, 5, 6} 和 {6, 7, 8, 9, 10, 1, 2, 3, 4, 5}
是否存在这样的优化sort方法?
特别:
self.words = (NSMutableArray*)[self.text componentsSeparatedByString:@" "];
Run Code Online (Sandbox Code Playgroud)
只要有分隔符就可以正常工作.我看到该方法返回包含在NSArray中的原始字符串,如果没有的话.这个单元素NSArray固执地拒绝被强制转换为NSMutableArray.
但是,当我这样做时:
self.words = [NSMutableArray arrayWithArray:self.words];
Run Code Online (Sandbox Code Playgroud)
它工作得很好.
这里有什么我想念的吗?从NSArray转换为NSMutableArray是不好的做法吗?
当您将对象添加到集合中(例如)时NSMutableArray,对象是否被复制(即值语义)或被保留(即引用语义)?
我对示例感到困惑:
NSMutableString *testStr = [@"test" mutableCopy];
NSMutableArray *arrayA = [[NSMutableArray alloc] init];
[arrayA addObject:testStr];
NSLog(@"%@", arrayA); // output: test
testStr = [@"world" mutableCopy];
NSLog(@"%@", arrayA); // output: test
// testStr is copied - value semantics
NSMutableArray *testArr = [@[@1, @2] mutableCopy];
NSMutableArray *arrarB = [[NSMutableArray alloc] init];
[arrarB addObject:testArr];
NSLog(@"%@", arrarB); // output: [1, 2]
[testArr addObject:@3];
NSLog(@"%@", arrarB); // output: [1, 2, 3]
// testArr is retained - reference semantics
Run Code Online (Sandbox Code Playgroud)
您可以看到:如果对象是NSMutableString,则看起来对象已被复制-您更改对象将不会影响数组中的对象。
但是,如果对象是NSMutableArray,则在更改对象时,数组中的对象也会更改-就像保留对象或通过引用传递一样。 …
嗨,我有一个NSMutableArray,我试试这个:
var ma = NSMutableArray()
let number:Int64 = 8345834344
ma.addObject(number)// Error "Type Int64 does not conform to protocol AnyObject"
Run Code Online (Sandbox Code Playgroud)
如何将Int64变量添加到NSMutableArray()?
nsmutablearray ×10
objective-c ×7
ios ×4
iphone ×4
nsarray ×3
arrays ×1
casting ×1
cocoa ×1
cocoa-touch ×1
copy ×1
enumeration ×1
exception ×1
int64 ×1
nsdictionary ×1
sorting ×1
swift ×1
xcode ×1